python - 使用另一个数据框的值更新数据框 - python

标签 python pandas dataframe

假设我有数据框 df1df2

c1 = np.repeat(['a','b'], [8, 8], axis=0)
c2 = list('xxxxyyyyxxxxyyyy')
c3 = ['G1','G1','G2','G2','G1','G1','G2','G2','G1','G1','G2','G2','G1','G1','G2','G2']
c4 = [1,2]*8
val1 = np.random.rand(16)
df1 = pd.DataFrame({'c1':c1,'c2':c2,'c3':c3,'c4':c4,'val':val1})

df2 = pd.DataFrame({'c1':['a','b','a','b'],'c2':['x','x','y','y'],'val2':[100,90,221,92]})

如何使用 df2df1 上创建包含 val2 中的值的列? 输出应如下所示:

   c1   c2   c3   c4   val1   val2
0  a    x    G1   1    0.67   100
1  a    x    G1   2    0.36   100
2  a    x    G2   1    0.12   100
3  a    x    G2   2    0.31   100
4  a    y    G1   1    0.56   221
5  a    y    G1   2    0.92   221
6  a    y    G2   1    0.62   221
7  a    y    G2   2    0.99   221
8  b    x    G1   1    0.73   90
9  b    x    G1   2    0.56   90
10 b    x    G2   1    0.22   90
11 b    x    G2   2    0.91   90
12 b    y    G1   1    0.34   92
13 b    y    G1   2    0.39   92
14 b    y    G2   1    0.78   92
15 b    y    G2   2    0.63   92

最佳答案

我认为你可以使用merge :

print pd.merge(df1,df2,on=['c1','c2'])
   c1 c2  c3  c4       val  val2
0   a  x  G1   1  0.600033   100
1   a  x  G1   2  0.929101   100
2   a  x  G2   1  0.311034   100
3   a  x  G2   2  0.341437   100
4   a  y  G1   1  0.512890   221
5   a  y  G1   2  0.124317   221
6   a  y  G2   1  0.428409   221
7   a  y  G2   2  0.047169   221
8   b  x  G1   1  0.485116    90
9   b  x  G1   2  0.960812    90
10  b  x  G2   1  0.347445    90
11  b  x  G2   2  0.490705    90
12  b  y  G1   1  0.273342    92
13  b  y  G1   2  0.784263    92
14  b  y  G2   1  0.805600    92
15  b  y  G2   2  0.057058    92

关于python - 使用另一个数据框的值更新数据框 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36701181/

相关文章:

python - 如何自定义格式 pandas 整数列以用逗号作为千位分隔符显示?

python - 如何使数据帧列表的长度全部相等

python - 从不同大小的元组填充 DataFrame

javascript - python : disable download popup when using firefox with selenium

python - 通过在 Python 中加权来按行组合矩阵

python - 访问重写的父方法的局部变量

python - 将元组转换为整数

python - 相互绘制数据框列

python - 将 np.tril 和 np.triu 堆叠在一起

python - 计算 Pandas 中具有相同列值的行的平均值