基于索引的两个数据帧合并

2024-09-27 21:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我整晚都在做这件事,就是想不出来,尽管我知道这应该很简单。因此,对于一个睡眠不足的家伙所说的以下咒语,我深表歉意:

所以,我有四个字段,Employee ID、Name、Station和Shift(ID是非null整数,其余是字符串或null)

我有大约10个数据帧,全部按ID索引,每个数据帧只包含两列(名称和站)或(名称和移位)

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

但在这一点上我真的很沮丧(特别是因为我找不到一种方法来直接检查我的最终数据帧以多少唯一索引结尾)

在使用了一些非常丑陋的.merge()方法之后,我终于找到了.concat()。但每个ID都有多行,当我签入excel时,索引就像Table1/1234、Table2/1234等。一行有班次,另一行有车站,这正是我想要避免的

如何将所有数据编译成一个数据帧,每个ID只有一行?可能不需要使用9个不同的合并语句,因为我以后必须放大


Tags: 数据方法字符串name名称idshiftemployee
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:56

如果我正确理解你的问题,这就是你想要的东西

例如,这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

只是一个提示,在你的问题中加入简单的说明性数据总是有助于得到答案

相关问题 更多 >

    热门问题