Apply之后的Dask DataFrame无法从重复的轴重新索引

时间:2019-03-01 17:54:57

标签: dataframe apply dask reindex fillna

我正在尝试将item_price的nan值更改为基于item_id的平均值 在以下快捷数据框中:

all_data['item_price'] = all_data[['item_id','item_price']].groupby('item_id')['item_price'].apply(lambda x: x.fillna(x.mean()))

All_data.head()

不幸的是,我收到以下错误消息:

ValueError: cannot reindex from a duplicate axis

有什么主意如何避免此错误或以其他方式将nan值更改为dask数据框的均值?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的办法。 Fillna和map可以代替使用:

all_data['item_price'] = all_data['item_price'].fillna(
    all_data['item_id'].map(
        all_data.groupby('item_id')['item_price'].mean().compute()
    )
)

这消除了重复轴问题。请注意,您必须使用map函数内部代码中所示的compute,它才能正常工作。