我有这个数据框:
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']
这没有给我想要的结果,因为端口号没有被排序。
如何从端口中提取数字并根据整数进行排序?
将 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