【发布时间】:2020-10-25 04:35:12
【问题描述】:
我有两个 pandas 数据框(df1 和 df2):
# df1
ID COL
1 A
2 F
2 A
3 A
3 S
3 D
4 D
# df2
ID VAL
1 1
2 0
3 0
3 1
4 0
我的目标是将df2 中的相应val 附加到df1 中的每个ID。但是,这种关系不是一对一的(这是我客户的错,对此我无能为力)。为了解决这个问题,我想通过df2['ID'] 对df1 进行排序,使得df1['ID'] 与df2['ID'] 相同。
所以基本上,对于 0 到 len(df2) 中的任何行 i:
- 如果
df1.loc[i, 'ID'] == df2.loc[i, 'ID']则在df1中保留行i。 - 如果
df1.loc[i, 'ID'] != df2.loc[i, 'ID']则从df1删除行i并重复。
想要的结果是:
ID COL
1 A
2 F
3 A
3 S
4 D
这样,我可以使用pandas.concat([df1, df2['ID']], axis=0) 将df2[VAL] 分配给df1。
有没有标准化的方法来做到这一点? pandas.merge() 有没有办法做到这一点?
在此被投票为重复之前,请注意len(df1) != len(df2),所以threads like this 并不是我想要的。
【问题讨论】:
标签: python pandas dataframe sorting