我有一个熊猫数据帧列表,每个熊猫数据帧都有一个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]
我想知道的是,是否存在一些更有效的方法来进行排序/使用熊猫数据帧中内置的某些方法而不是使用python sorted
函数来获取第一个值?还是如果有某种方法可以指定在合并过程中以这种方式对连接的数据框进行排序?谢谢。