我有一个 CSV 文件,其中有一列 IP 地址、MAC 地址和一些其他数据。我想按 IP 地址升序对所有数据进行排序
输入:
| IP Address | MAC Address | ID |
| --- | --- | --- |
| 10.10.10.1 | {mac1} | {id1} |
| 10.10.10.112 | {mac2} | {id2} |
| 10.10.10.17 | {mac3} | {id3} |
| 10.10.10.7 | {mac4} | {id4} |
我期望的输出是:
| IP Address | MAC Address | ID |
| --- | --- | --- |
| 10.10.10.1 | {mac1} | {id1} |
| 10.10.10.7 | {mac4} | {id4} |
| 10.10.10.17 | {mac3} | {id3} |
| 10.10.10.112 | {mac2} | {id2} |
IP 地址与其对应的 MAC 和 ID 按正确的升序排列
我试过使用 pandas
Dataframe.sort_values()
,它没有密钥将 IP 地址按不正确的升序排列,因为它将 IP 视为整数而不是 IP 地址。我也尝试过使用 sort_values()
和参数 key=ipaddress.IPv4Address
但我只是得到一个 KeyError
df_new = df.sort_values(df['IP_Address'], key=ipaddress.IPv4Address)
我还尝试了
sorted()
将 IP 地址按正确顺序放入列表中,然后当我将其放回数据框中时,它不会对每个 IP 的相应 MAC 和 ID 进行排序
Series.str.split
和df.apply()
new_df = (df.sort_values(by=["IP Address"], key=lambda x: x.str.split(".")
.apply(lambda y: [int(z) for z in y])))
print(new_df)
IP Address MAC Address ID
0 10.10.10.1 {mac1} {id1}
3 10.10.10.7 {mac4} {id4}
2 10.10.10.17 {mac3} {id3}
1 10.10.10.112 {mac2} {id2}