小编Fre*_*yrd的帖子

pandas DataFrame 中行的高效成对比较

我目前正在处理一个较小的数据集(大约 900 万行)。不幸的是,大多数条目都是字符串,即使强制类别,框架在内存中也只有几 GB。

我想做的是将每一行与其他行进行比较,并对内容进行直接比较。例如,给定

   A   B     C      D
0 cat blue  old Saturday
1 dog red   old Saturday
Run Code Online (Sandbox Code Playgroud)

我想计算

      d_A   d_B   d_C   d_D
0, 0  True  True  True  True
0, 1  False False True  True
1, 0  False False True  True
1, 1  True  True  True  True
Run Code Online (Sandbox Code Playgroud)

显然,组合爆炸将排除每个记录与其他记录的比较。因此我们可以通过应用 groupby 来使用阻塞,比如在 A 列上。

我的问题是,有没有一种方法可以在 pandas 或 dask 中执行此操作,比以下序列更快:

  1. 按索引分组
  2. 将每个组外连接到自身以生成对
  3. dataframe.apply 比较函数在每行对上

作为参考,假设我可以使用大量的核心(数百个)和大约 200G 的内存。

python pandas dask pandas-groupby

4
推荐指数
1
解决办法
5552
查看次数

标签 统计

dask ×1

pandas ×1

pandas-groupby ×1

python ×1