首页 > 解决方案 > 如何组合具有一组公共列值的多个数据框值?

问题描述

我有一个df1由字符串值组成的数据框ColA,这些ColA值将有重复项,如图所示。

现在我df2将在 中具有相同的值集,ColA不再重复。所以我想将 的ColD值附加df2到我原来的df1. (60 将重复应用程序两次,20 将重复三次..等等..)。同样,我想将ColE值附加df3到我的df1

是否可以通过转置来完成,ColA使其成为列名,然后我们可以对其附加值,或者可以将ColA其设置为索引,然后我们需要附加值,还是有其他方法?

import numpy as np
import pandas as pd
import io

data1='''
ColA,ColB,ColC
app,5,2
app,6,3
book,10,6
book,4,8
book,9,0
car,7,8
car,1,3
'''

data2='''
ColA,ColD
app,60
book,20
car,8
'''

data3='''
ColA,ColE
app,3
book,6
car,9
'''

df1=pd.read_csv(io.StringIO(data1))
df2=pd.read_csv(io.StringIO(data2))
df3=pd.read_csv(io.StringIO(data3))

预期输出:df1

ColA ColB ColC ColD ColE
app     5    2   60    3
app     6    3   60    3
book   10    6   20    6
book    4    8   20    6
book    9    0   20    6
car     7    8    8    9
car     1    3    8    9

标签: pythonpandasdataframe

解决方案


你可以merge

df1.merge(df2, on='ColA', how='left').merge(df3, on='ColA', how='left')

输出:

   ColA  ColB  ColC  ColD  ColE
0   app     5     2    60     3
1   app     6     3    60     3
2  book    10     6    20     6
3  book     4     8    20     6
4  book     9     0    20     6
5   car     7     8     8     9
6   car     1     3     8     9

推荐阅读