我如何才能在两个键(df1
,df2
)上加入两个熊猫数据序列(bla1
,bla2
),当它不是null时就应该使用bla2
键(参见df1
中的最后两行)。
伪码
如果bla2
不是null,那么在bla2
上加入bla
否则加入bla
on bla1
Dataframes
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 | ... | ... | ... | ... | ... |
发布于 2019-01-16 13:26:24
[首先创建一个新列来组合这两个列。
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)
https://stackoverflow.com/questions/54217883
复制相似问题