有没有办法在字典中对 ip 地址进行排序?
Is there a way to sort ip-addresses in a dictionary?
我正在使用 Pandas 对数据框进行排序。
少数列是需要排序的 IP 地址。
有没有一种方法可以轻松地使用 Pandas 按 IP 地址排序?是否可以创建一个自定义函数,我可以使用 Pandas 对 IP 地址进行排序?
我能够对 IP 地址列表进行排序,但是我很难弄清楚如何使用 Pandas 创建自定义排序函数。有没有办法从套接字模块中合并 inet_aton?
我能够在 Pandas 之外的列表中完成此任务:
list_of_ips = ['192.168.204.111', '10.10.10.10', '172.16.32.6', '1.1.1.1', '8.8.8.100']
sorted(list_of_ips, key=lambda ip: struct.unpack("!L", inet_aton(ip))[0])
['1.1.1.1', '8.8.8.100', '10.10.10.10', '172.16.32.6', '192.168.204.111']
我希望数据框中的一列 IP 地址按 Pandas 排序。
在 pandas 中我们有 argsort
df.iloc[np.argsort(list(map(socket.inet_aton,list_of_ips)))]
cyberpandas 库在这种情况下可能很有用。适用于 pandas.
IPArray
这是您的 IP 地址数据的容器。即使您可以对 IPv4 和 IPv6 地址进行排序。
In [1]: from cyberpandas import IPArray
In [2]: import pandas as pd
In [3]: arr = IPArray(['192.168.1.1',
...: '2001:0db8:85a3:0000:0000:8a2e:0370:7334'])
...:
In [4]: arr
Out[4]: IPArray(['192.168.1.1', '2001:db8:85a3::8a2e:370:7334'])
从下面找到官方文档link
我正在使用 Pandas 对数据框进行排序。 少数列是需要排序的 IP 地址。
有没有一种方法可以轻松地使用 Pandas 按 IP 地址排序?是否可以创建一个自定义函数,我可以使用 Pandas 对 IP 地址进行排序?
我能够对 IP 地址列表进行排序,但是我很难弄清楚如何使用 Pandas 创建自定义排序函数。有没有办法从套接字模块中合并 inet_aton?
我能够在 Pandas 之外的列表中完成此任务:
list_of_ips = ['192.168.204.111', '10.10.10.10', '172.16.32.6', '1.1.1.1', '8.8.8.100']
sorted(list_of_ips, key=lambda ip: struct.unpack("!L", inet_aton(ip))[0])
['1.1.1.1', '8.8.8.100', '10.10.10.10', '172.16.32.6', '192.168.204.111']
我希望数据框中的一列 IP 地址按 Pandas 排序。
在 pandas 中我们有 argsort
df.iloc[np.argsort(list(map(socket.inet_aton,list_of_ips)))]
cyberpandas 库在这种情况下可能很有用。适用于 pandas.
IPArray
这是您的 IP 地址数据的容器。即使您可以对 IPv4 和 IPv6 地址进行排序。
In [1]: from cyberpandas import IPArray
In [2]: import pandas as pd
In [3]: arr = IPArray(['192.168.1.1',
...: '2001:0db8:85a3:0000:0000:8a2e:0370:7334'])
...:
In [4]: arr
Out[4]: IPArray(['192.168.1.1', '2001:db8:85a3::8a2e:370:7334'])
从下面找到官方文档link