gpt4 book ai didi

python - 将一个数据框中的列添加到另一个数据框中,以获取重叠列中存在的值

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:10 24 4
gpt4 key购买 nike

这是我正在尝试做的一个例子:

In [46]: import pandas as pd

In [47]: df_3 = pd.DataFrame(np.arange(12).reshape(6,2), columns=["a", "z"])


In [48]: df = pd.DataFrame(np.arange(12).reshape(4,3), columns=["a", "b", "c"])

In [49]: df
Out[49]:
a b c
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11

[4 rows x 3 columns]

In [50]: df_3
Out[50]:
a z
0 0 1 # present in df
1 2 3
2 4 5
3 6 7 # present in df
4 8 9
5 10 11

[6 rows x 2 columns]

我想将列 z 添加到 df,但我希望只为匹配列 a 的行添加值。如果不是,我想要一个空值。

我想要的输出是这样的:

In [52]: df["z"] = [1, np.nan, 7, np.nan]

In [53]: df
Out[53]:
a b c z
0 0 1 2 1
1 3 4 5 NaN
2 6 7 8 7
3 9 10 11 NaN

[4 rows x 4 columns]

我尝试过天真的尝试,比如

In [57]: df.merge(df_3, on=["a"])
Out[57]:
a b c z
0 0 1 2 1
1 6 7 8 7

[2 rows x 4 columns]

这没有给我想要的结果。

最佳答案

只需执行 merge在“a”列上执行左类型合并:

In [72]:

df.merge(df_3, on='a', how='left')
Out[72]:
a b c z
0 0 1 2 1
1 3 4 5 NaN
2 6 7 8 7
3 9 10 11 NaN

你得到这个结果的原因:

In [57]: df.merge(df_3, on=["a"])
Out[57]:
a b c z
0 0 1 2 1
1 6 7 8 7

[2 rows x 4 columns]

是因为默认的合并类型是“内部”,所以值必须同时存在于 lhs 和 rhs 中,请参阅文档:http://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging

关于python - 将一个数据框中的列添加到另一个数据框中,以获取重叠列中存在的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29374147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com