根据索引合并两个数据框

时间:2020-08-26 01:48:54

标签: python pandas dataframe merge

我整夜都呆在这里,即使我知道这很简单,也无法弄清楚。因此,对于以下来自睡眠不足的同伴的咒骂,我表示最诚挚的歉意:

因此,我有四个字段,员工ID,姓名,职位和班次(ID为非空整数,其余为字符串或null)。

我大约有10个数据框,所有数据框都由ID索引。并且每个仅包含两列(名称和站点)或(名称和Shift)

现在,我想将所有这些组合到一个数据帧中,每个ID都有唯一的行。

但是我对此感到非常沮丧(特别是因为我无法找到一种方法来直接检查最终数据帧以多少个唯一索引结尾)

在弄乱了使用.merge()的一些非常丑陋的方法之后,我终于找到了.concat()。但是它会不断为每个ID生成多行,当我检查excel时,索引就像Table1 / 1234,Table2 / 1234等。其中一行有移位,另一行有驻站,这正是我要避免的事情

如何将我的所有数据编译到一个数据帧中,每个ID恰好有一行?可能不使用9个不同的merge语句,因为我以后必须扩大规模。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,这就是您想要的。

例如,这3个数据框。

In [1]: df1
Out[1]:
          0         1         2
0  3.588843  3.566220  6.518865
1  7.585399  4.269357  4.781765
2  9.242681  7.228869  5.680521
3  3.600121  3.931781  4.616634
4  9.830029  9.177663  9.842953
5  2.738782  3.767870  0.925619
6  0.084544  6.677092  1.983105
7  5.229042  4.729659  8.638492
8  8.575547  6.453765  6.055660
9  4.386650  5.547295  8.475186

In [2]: df2
Out[2]:
           0          1
0  95.013170  90.382886
2   1.317641  29.600709
4  89.908139  21.391058
6  31.233153   3.902560
8  17.186079  94.768480

In [3]: df
Out[3]:
          0         1         2
0  0.777689  0.357484  0.753773
1  0.271929  0.571058  0.229887
2  0.417618  0.310950  0.450400
3  0.682350  0.364849  0.933218
4  0.738438  0.086243  0.397642
5  0.237481  0.051303  0.083431
6  0.543061  0.644624  0.288698
7  0.118142  0.536156  0.098139
8  0.892830  0.080694  0.084702
9  0.073194  0.462129  0.015707

你可以做

pd.concat([df,df1,df2], axis=1)

这产生

In [6]: pd.concat([df,df1,df2], axis=1)
Out[6]:
          0         1         2         0         1         2          0          1
0  0.777689  0.357484  0.753773  3.588843  3.566220  6.518865  95.013170  90.382886
1  0.271929  0.571058  0.229887  7.585399  4.269357  4.781765        NaN        NaN
2  0.417618  0.310950  0.450400  9.242681  7.228869  5.680521   1.317641  29.600709
3  0.682350  0.364849  0.933218  3.600121  3.931781  4.616634        NaN        NaN
4  0.738438  0.086243  0.397642  9.830029  9.177663  9.842953  89.908139  21.391058
5  0.237481  0.051303  0.083431  2.738782  3.767870  0.925619        NaN        NaN
6  0.543061  0.644624  0.288698  0.084544  6.677092  1.983105  31.233153   3.902560
7  0.118142  0.536156  0.098139  5.229042  4.729659  8.638492        NaN        NaN
8  0.892830  0.080694  0.084702  8.575547  6.453765  6.055660  17.186079  94.768480
9  0.073194  0.462129  0.015707  4.386650  5.547295  8.475186        NaN        NaN

有关更多详细信息,您可能希望查看pd.concat

仅在问题中添加简单说明性数据的提示总是有助于获得答案。