我整夜都呆在这里,即使我知道这很简单,也无法弄清楚。因此,对于以下来自睡眠不足的同伴的咒骂,我表示最诚挚的歉意:
因此,我有四个字段,员工ID,姓名,职位和班次(ID为非空整数,其余为字符串或null)。
我大约有10个数据框,所有数据框都由ID索引。并且每个仅包含两列(名称和站点)或(名称和Shift)
现在,我想将所有这些组合到一个数据帧中,每个ID都有唯一的行。
但是我对此感到非常沮丧(特别是因为我无法找到一种方法来直接检查最终数据帧以多少个唯一索引结尾)
在弄乱了使用.merge()的一些非常丑陋的方法之后,我终于找到了.concat()。但是它会不断为每个ID生成多行,当我检查excel时,索引就像Table1 / 1234,Table2 / 1234等。其中一行有移位,另一行有驻站,这正是我要避免的事情
如何将我的所有数据编译到一个数据帧中,每个ID恰好有一行?可能不使用9个不同的merge语句,因为我以后必须扩大规模。
答案 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
仅在问题中添加简单说明性数据的提示总是有助于获得答案。