【问题标题】:Using Groupby to store value_counts in new column in Dask Dataframe使用 Groupby 将 value_counts 存储在 Dask Dataframe 的新列中
【发布时间】:2019-09-28 11:07:43
【问题描述】:

我曾经使用this solution 在 Pandas 中计算和存储列的 value_counts 并将结果存储在新列中。

现在我正在尝试对 Dask Dataframe 执行相同的操作,但它会导致以下错误:

df['new_column'] = df.groupby(['A'])['B'].transform('count', meta='int').compute()

ValueError: 无法从重复的轴重新索引

附: df 数据框有四个分区。

如何计算A 列的value_count 并将它们存储在Dask 中的new_column 中,与this answer 一样?

【问题讨论】:

  • 您介意生成mcve吗?

标签: python pandas dask


【解决方案1】:

如果您不需要坚持使用 transform(在最新的 dask 版本中引入,请参阅 issue),我建议您使用左合并,如下面的代码所示。


import pandas as pd
import dask.dataframe as dd

df = pd.DataFrame({"A":[0,0,1,1,1,2,2],
                   "B":[1,2,3,4,5,6,7]})

df = dd.from_pandas(df, npartitions=2)

out = df.groupby("A")["B"]\
        .count()\
        .compute()\
        .reset_index(name="new_column")

df = dd.merge(df, out, on=["A"], how="left")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2021-12-13
    • 2020-10-14
    • 2016-12-07
    相关资源
    最近更新 更多