我在将 2 个数据帧与数据帧 1 中的多个索引和数据帧 2 中的单个索引合并时遇到问题。我有 数据框1
ID description
1 A
1 B
1 C
2 D
2 E
数据框2
ID price
1 100
2 50
预期输出
ID description price
1 A 100
1 B NaN
1 C NaN
2 D 50
2 E NaN
谢谢你,对不起我的英语。
最佳答案
您可以使用带有 bool 值的 .loc
来删除重复项,并使用 map
从 df2
中查找值
此方法假定您只有一个目标列。
df1.loc[df1.drop_duplicates(subset=['ID'],keep='first').index,
'price'] = df1['ID'].map(df2.set_index('ID')['price'])
ID description price
0 1 A 100.0
1 1 B NaN
2 1 C NaN
3 2 D 50.0
4 2 E NaN
.groupby('id').cumcount()
和 .merge
另一种更动态的方法是在您的 ID 上创建一个序列,然后在两个键上加入。
df1['sequence'] = df1.groupby('ID').cumcount()
df2['sequence'] = df2.groupby('ID').cumcount()
df3 = pd.merge(df1,df2,on=['ID','sequence'],how='left').drop('sequence',1)
ID description price
0 1 A 100.0
1 1 B NaN
2 1 C NaN
3 2 D 50.0
4 2 E NaN
print(df1)
ID description sequence
0 1 A 0
1 1 B 1
2 1 C 2
3 2 D 0
4 2 E 1
print(df2)
ID price sequence
0 1 100 0
1 2 50 0
关于python - Pandas 数据帧 : How to merge dataframe with multiple index and single index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66169077/