Skip to main content
 首页 » 编程设计

python之从大型数据集中提取唯一数据

2025年05月04日23bluestorm

我有一个非常大的 CSV 数据集(9 亿条记录),它包含以下格式:

URL | IP | ActivityId 

示例数据:

http://google.com/ | 127.0.0.1 | 2 
http://google.com/ | 12.3.3.1 | 1 

对于这种格式,我希望获得每个 URL 的所有唯一事件,这些事件不会出现在其他 URL 中。

例如,让我们在我上面提供的数据中再添加一个样本

http://yahoo.com/ | 123.4.5.1 | 2 

现在 ActivityId 2 被完全排除,因为它属于两个 url:Google 和 Yahoo。所以我想要的是只找到属于单个 URL 的所有事件,并且我想知道它们属于哪个 URL。

我尝试做的事情:

创建字典

URL => set(activity1, activity2, ... , activityN) 

(这部分比较慢,这里回答了Parse a very large CSV dataset)

使用这本字典,我将每个条目相互比较,发现集合之间的差异,并用差异结果更新相应的集合。

我怎样才能使用 pandas 完成我想要的事情?

请您参考如下方法:

另一种解决方案 nunique :

df.groupby('ActivityId')['URL'].filter(lambda x: x.nunique() == 1) 

更快的解决方案 transform和 boolean indexing :

df[df.groupby('ActivityId')['URL'].transform('nunique') == 1]