gpt4 book ai didi

python - Dask groupby apply 行为异常

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:07 26 4
gpt4 key购买 nike

我正在尝试为这个测试示例在 dask 中运行 groupby apply

import pandas as pd
import dask.dataframe as dd
tdf = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6, 7, 8, 9],
'b': [4, 5, 6, 3, 2, 1, 0, 0, 0]},
index=[0, 1, 3, 5, 6, 8, 9, 9, 9])
ddf = dd.from_pandas(tdf, npartitions=3)

def func(df):
df['b'] = df.b - df.b.mean()
return df

meta = tdf.groupby('a').apply(func)
rddf = ddf.groupby('a').apply(func,meta=tmeta).compute()

我在 Windows 上的 jupyter notebook anaconda python_version = 3.6 中执行此代码,出现错误 'ValueError: cannot reindex from a duplicate axis'并重复执行代码的 rddf 部分,我得到了

a   b
6 5 0.0
9 9 0.0
0 1 0.0
1 2 0.0
8 6 0.0
9 7 0.0
9 8 0.0
3 3 0.0
5 4 0.0

为什么会这样,同样的代码,不同的结果?

最佳答案

使用 df.copy() 能够得到预期的结果,但仍然不知道是什么导致了问题

import pandas as pd
import dask.dataframe as dd
import dask
tdf = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6, 7, 8, 9],
'b': [4, 5, 6, 3, 2, 1, 0, 0, 0]},
index=[0, 1, 3, 5, 6, 8, 9, 9, 9])
ddf = dd.from_pandas(tdf, npartitions=3)
def func(df):
df = df.copy()
df['b'] = df.b - df.b.mean()
return df
meta = tdf.groupby('a').apply(func)
rddf = ddf.groupby('a').apply(func,meta=meta).compute()

元是

        a   b
a
1 0 1 0.0
2 1 2 0.0
3 3 3 0.0
4 5 4 0.0
5 6 5 0.0
6 8 6 0.0
7 9 7 0.0
8 9 8 0.0
9 9 9 0.0

rddf 是

       a    b
a
5 6 5 0.0
9 9 9 0.0
1 0 1 0.0
2 1 2 0.0
6 8 6 0.0
7 9 7 0.0
8 9 8 0.0
3 3 3 0.0
4 5 4 0.0

关于python - Dask groupby apply 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com