如何在两个键(df1
,df2
)上保持两个熊猫数据框(bla1
,bla2
)的连接,其中bla2
键应该是否在不为null时使用(请参见df1
的最后两行)?
伪代码
如果bla2
不为空,则在bla
上加入bla2
否则在bla
上加入bla1
数据框
df1
| bla1 | bla2 | a | b |
|------|------|-----|-----|
| 1 | | ... | ... |
| 2 | | ... | ... |
| 3 | | ... | ... |
| 4 | 7 | ... | ... |
| 5 | 8 | ... | ... |
+ df2
| bla | x | y | z |
|-----|-----|-----|-----|
| 1 | ... | ... | ... |
| 2 | ... | ... | ... |
| 3 | ... | ... | ... |
| 7 | ... | ... | ... |
| 8 | ... | ... | ... |
= df3
| bla1 | bla2 | a | b | x | y | z |
|------|------|-----|-----|-----|-----|-----|
| 1 | | ... | ... | ... | ... | ... |
| 2 | | ... | ... | ... | ... | ... |
| 3 | | ... | ... | ... | ... | ... |
| 5 | 7 | ... | ... | ... | ... | ... |
| 4 | 8 | ... | ... | ... | ... | ... |
答案 0 :(得分:1)
[首先创建一个新列以合并两个列。
df1["new_column"] = df1.bla2.fillna(df1.bla1);
然后将两个框架都加入并放置额外创建的列。
df3 = pd.merge(df1, df2, how="inner", left_on="new_column", right_on="bla").drop(["new_column", "bla"], axis=1)