Pandas数据帧按原始数据帧中索引的和进行连接和排序

2024-05-13 19:35:23 发布

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

我有一个数据帧列表,每个数据帧都有一个network_device列,如下所示(此列中的值是唯一的,即数据帧内没有重复,但列表中的值将在数据帧之间重叠):

In [63]: df1                                                                                                                                                                                   
Out[63]: 
    network_device
0        ar01.hel2
1        ar01.arn2
2        ar01.ber1
3        ar01.bio1
4        ar01.del1
5        ar01.den2
6        ar01.dfw1
7        ar01.ewr2
8        ar01.fml2
9        ar01.fra2
10       ar01.hkg3
11       ar01.jnb1
12       ar01.kul2
13       ar01.lax1
14       ar01.lhr3
15       ar01.mia1
16       ar01.mrs1
17       ar01.nrt1
18       ar01.ord3
19       ar01.sea1
20       ar01.sin1
21       ar01.sjc1
22       ar01.sof1
23       ar01.vab1
24       ar01.yyz1
25       ar02.atl1
26       ar02.atl4
27       ar02.bom1
28       ar02.cgk1
29       ar02.cph2
..             ...
489    xfwr01.cco1
490    xfwr01.cln1
491    xfwr01.cln2
492    xfwr01.eag1
493    xfwr01.frc1
494    xfwr01.frc3
495    xfwr01.ftw1
496    xfwr01.ftw2
497    xfwr01.lla1
498    xfwr01.lla2
499    xfwr01.nao1
500    xfwr01.ncg1
501    xfwr01.nha1
502    xfwr01.odn1
503    xfwr01.odn2
504    xfwr01.pnb1
505    xfwr01.prn2
506    xfwr01.prn3
507    xfwr01.rva1
508    xfwr01.snc1
509    xfwr01.vll1
510    xfwr01.xdc2
511    xfwr02.nao1
512    xfwr02.pnb1
513    xfwr02.rva1
514    xfwr02.snc1
515    xfwr02.vll1
516    xfwr02.xdc2
517    xfwr03.snc1
518    csw92b.atn5

[519 rows x 1 columns]

现在,我想把所有这些数据帧连接到network_device列中,按照每个数据帧中它们的索引之和对结果进行升序排序,然后得到第一个结果。为了更清楚地说明这一点,例如我的数据帧列表被称为dataframes。那么,我想要的可以写成:

joined_df = pd.merge(*dataframes, on="network_device")
device_name = sorted(
    joined_df.network_device,
    key=lambda d: sum(df[df.network_device == d].index[0] for df in dataframes),
)[0]

我想知道的是,是否有比使用pythonsorted函数更有效的方法来进行排序/获取第一个值?或者,在合并过程中,我是否可以指定某种方式对联接的数据帧进行排序?谢谢


Tags: 数据df列表排序devicenetworkdataframesar01