gpt4 book ai didi

python - Pandas 通过两列左连接 DataFrames

转载 作者:太空狗 更新时间:2023-10-29 22:28:35 25 4
gpt4 key购买 nike

你能帮我加入两个 DataFrame 吗?

我有两个 DataFrame。

df1:

index   val1    val2
--------------------
1 str1 abc1
2 str2 abc2
3 str3 abc3
4 str4 abc9
5 str5 abc4

df2:

index   val2
------------
1 abc1
2 abc2
4 abc3
5 abc4
9 abc5

我需要基于前两个创建一个 DataFrame,并通过两列进行左连接。列 index 和 val2 在两个 DataFrame 中具有相同的名称。 df3 的结果应该是这样的:

index   val1    val2    val3
----------------------------
1 str1 abc1 1
2 str2 abc2 1
3 str3 abc3 NaN
4 str4 abc9 NaN
5 str5 abc4 1

如果 df1 中的索引具有与 df2 中相同的 val2,则应删除 df2 中不存在于 df1 中的索引,然后应将 1 添加到新列 val3,否则:NaN。

非常感谢!

最佳答案

这是一种方式。如下所示,我建议您对 val3 使用 Boolean 而不是 float,因为这是系列所代表的。

# merge and set index
res = df1.merge(df2, how='left').set_index('index')

# map val2 from df2
res['val3'] = df2.set_index('index')['val2']

# check for equality of val3 and val2
res['val3'] = res['val3'] == res['val2']

print(res)

val1 val2 val3
index
1 str1 abc1 True
2 str2 abc2 True
3 str3 abc3 False
4 str4 abc9 False
5 str5 abc4 True

关于python - Pandas 通过两列左连接 DataFrames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50889324/

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