【发布时间】:2021-01-10 09:32:06
【问题描述】:
我有一个这样的 DataFrame 70581 行
id created_at ... resource_id
230789 2017-01-19 ... 490
230722 2017-01-19 ... 514
... ... ... ...
312341 2017-08-27 ... 551
我想获取所有可能的 resource_id 列对。如果对重复,我想将一对的计数器加 1。结果可能类似于:(490,514) count 5。
我尝试使用list(itertools.combinations(df['resource_id'],2)) 来获取这些对,但得到了 MemoryError。
我怎样才能得到我想要的?
【问题讨论】:
-
Lev Gelman 这很有帮助,但首先我需要将这些对放入单独的列中,以实现该问题中所写的内容。感谢您的帮助!
-
您不能对计数元素使用迭代器。在迭代之前隐藏元素的数量。一种有用的方法是按资源 id 对行进行分组并对实例进行计数,然后将它们组合起来,并乘以计数器。
-
为什么在生成器周围使用 list()?根本不创建完整的列表
-
@Yanirmr 我的方法是首先获取所有带有重复的配对,然后计算每次出现的次数并将其放入字典中,但我的内存用完了。我会尝试分组
标签: python-3.x pandas dataframe combinations