如何应用正则表达式以升序排列 pandas 数据框

问题描述 投票:0回答:1

我有这个数据框:

df

Campus  ServerName   Port
NA1     ServerABC    Ethernet1
NA1     ServerABC    Ethernet11
NA1     ServerABC    Ethernet12
NA1     ServerABC    Ethernet2
NA1     ServerABC    Ethernet56
NA1     ServerABC    Ethernet6

我想根据 Campus、ServerName 和 Port 按升序对该数据框进行排序。由于端口是文本,我需要从端口获取数字并根据端口的数字部分对其进行排序。

最终的 df 应该是这样的:

Campus  ServerName   Port
NA1     ServerABC    Ethernet1
NA1     ServerABC    Ethernet2
NA1     ServerABC    Ethernet6
NA1     ServerABC    Ethernet11
NA1     ServerABC    Ethernet12
NA1     ServerABC    Ethernet56

我试过这个:

df=df.sort_values(by=['Campus', 'ServerName', 'Port']

这没有给我想要的结果,因为端口号没有被排序。

如何从端口中提取数字并根据整数进行排序?

python pandas regex sorting
1个回答
0
投票

将 sort_values 与

key

一起使用
out = df.sort_values(['Campus', 'ServerName', 'Port'], 
                     key=lambda x: pd.to_numeric(x.str.replace('Ethernet', ''), errors='ignore'))

    Campus  ServerName  Port
0   NA1     ServerABC   Ethernet1
3   NA1     ServerABC   Ethernet2
5   NA1     ServerABC   Ethernet6
1   NA1     ServerABC   Ethernet11
2   NA1     ServerABC   Ethernet12
4   NA1     ServerABC   Ethernet56
© www.soinside.com 2019 - 2024. All rights reserved.