我有两个数据框,如下所示:
df1
A B
0 0 3
1 0 2
2 1 5
3 1 3
4 2 5
5 'Ciao' 'log'
6 3 4
df2
A B
0 0 -1
1 0 20
2 1 -2
3 1 33
4 2 17
我想合并两个数据帧,以便 if A==0
保留 df1
的值否则保留 df2
的值.
最后,我想要如下内容
df2
A B
0 0 3
1 0 2
2 1 -2
3 1 33
4 2 17
最佳答案
假设数据帧已对齐(并且 df1
中的重复索引 3 是一个拼写错误),您不需要合并
,而是使用 where
的条件:
out = df1.where(df1['A'].eq(0), df2)
输出:
A B
0 0 3
1 0 2
2 1 -2
3 1 33
4 2 17
注意。如果你真的想要合并,你必须进一步解释合并的逻辑并提供一个重要的例子。
更新的示例:
您似乎仍然有部分对齐的索引,但想要获得交集:
out = (df1.where(df1['A'].eq(0), df2)
.loc[df1.index.intersection(df2.index)]
)
或者:
out = (df1.reindex_like(df2)
.where(df1['A'].eq(0), df2)
)
输出:
A B
0 0.0 -1.0
1 0.0 20.0
2 1.0 -2.0
3 1.0 33.0
4 2.0 17.0
关于python - 如何根据条件合并两个pandas数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74530992/