我改写我的问题。我正在寻找以下问题的解决方案:
我有一个DataFrame像:
Sp Mt Value count
4 MM2 S4 bg 10
5 MM2 S4 dgd 1
6 MM4 S2 rd 2
7 MM4 S2 cb 8
8 MM4 S2 uyi 8
另一个DataFrame像:
Sp Mt Value count
4 MM2 S4 bg 9
5 MM2 S4 dgd 10
6 MM4 S2 rd 21
7 MM4 S2 cb 8
8 MM4 S2 uyi 8
我想像这样合并两者:
Sp Mt Value count
4 MM2 S4 bg [10,9]
5 MM2 S4 dgd [1,10]
6 MM4 S2 rd [2,21]
7 MM4 S2 cb [8,8]
8 MM4 S2 uyi [8,8]
最佳答案
使用merge
(默认inner join
)或concat
(默认outer join
)首先将两者都加入。然后创建新列,最后通过drop
删除不必要的列:
df = pd.merge(df1, df2, on = ['Sp','Mt','Value'])
df['count'] = df.filter(like='count').values.tolist()
df = df.drop(['count_x','count_y'], axis=1)
print (df)
Sp Mt Value count
0 MM2 S4 bg [10, 9]
1 MM2 S4 dgd [1, 10]
2 MM4 S2 rd [2, 21]
3 MM4 S2 cb [8, 8]
4 MM4 S2 uyi [8, 8]
cols = ['Sp','Mt','Value']
df = pd.concat([df1.set_index(cols)['count'],
df2.set_index(cols)['count']],axis=1, keys=('count','a'))
df['count'] = df[['count','a']].values.tolist()
df = df.drop('a', axis=1).reset_index()
print (df)
Sp Mt Value count
0 MM2 S4 bg [10, 9]
1 MM2 S4 dgd [1, 10]
2 MM4 S2 rd [2, 21]
3 MM4 S2 cb [8, 8]
4 MM4 S2 uyi [8, 8]
关于python - Pandas -如何合并两个数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43570861/