我改写我的问题。我正在寻找以下问题的解决方案:

我有一个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/

10-09 07:25