我有一个很大的IP地址文件,并将其转换为十进制值,以及如何在不更改第一个值的情况下合并两列的值
我在熊猫代码中创建了一个聚合组,但是它不计算我的合并值
我的输出:
ip_cut Code Range Ip
16777 AU 256 16777216
16777 CN 256 16777472
16777 CN 512 16777728
16778 AU 1024 16778240
16843 CN 1536 16843264
16844 CN 256 16844800
16845 CN 1792 16845056
16846 CN 4096 16846848
如何添加范围合并总数
16777472+256 =16777728
只需添加与范围相同的国家/地区代码并获得第一个值,就不需要第二个值。
如何获得这样的预期输出(不需要第二个值)
Code Range Ip
AU 256 16777216
CN 768 16777472
AU 1024 16778240
CN 7680 16843264
代码:
import pandas as pd
file = "/Users/roc/Desktop/js/ttest/delegated2.txt"
df = pd.read_csv(file,sep=' ',header=None,error_bad_lines=False, warn_bad_lines=False,names=['Ip','Range','Code'],low_memory=False)
df['ip_cut'] = df['Ip'].astype(str)
df['ip_cut'] = df['ip_cut'].str[:5]
df1 = df.groupby(['ip_cut','Code'],as_index=False).agg({'Range':lambda x: x.sum(), 'Ip':'first'})
new = df1.sort_values('Ip', ascending=True)
print(new)