如何使用聚合合并熊猫中的特定列值

时间:2019-02-15 05:25:56

标签: pandas

我有一个很大的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)

0 个答案:

没有答案