第一列相同,如何高效计算第二节列不同个数

目前有上亿条如下数据:

1517021612555,777
1517021612555,778
1517021612553,777
1517021612555,779
1517021612556,779
....
1517021612557,7778
1517021612558,7790
1517021612558,7790

用什么方法可以可以进行如下计算,速度要快:

1517021612555,3
1517021612553,1
1517021612556,3
1517021612557,1
1517021612558,2
阅读 2.1k
2 个回答

可以提供一个方法,不过亿级数据能不能快,我没测过。
假设你的数据存在test.txt里:

import pandas as pd
df = pd.read_csv("test.txt", names=["a", "b"])
result = df["b"].groupby(df["a"]).nunique()

假如你的文件1.txt, 编码格式utf-8

import pandas as pd
df = pd.read_csv('1.txt', header=None, sep=',', encoding='utf-8', names=['a', 'b'])
df.groupby('a')['b'].count()    # 非去重版groupby
df.groupby('a')['b'].apply(lambda b: b.drop_duplicates().count()) # 去重版groupby
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题