首页 > 解决方案 > 有没有办法重写函数 data1.groupby(level=0)['total_tax'],apply(lambda x: x.shift()) 以避免设置复制警告

问题描述

我正在处理一个大数据集,当我执行这个功能时:

data1['total_t_1'] = data1.groupby(level=0)['total_tax'].apply(lambda x: x.shift())

我收到此错误:SettingWithCopyWarning: A value is trying to be set on a copy of a slice from DataFrame。尝试使用 .loc [row_indexer, col_indexer] = value 代替。

我认识到错误出在这部分:apply(lambda x: x.shift())

有人可以建议我如何避免这个问题吗?

标签: pythonpython-3.xpandaslambdapandas-groupby

解决方案


它只是警告您data1来自另一个 DataFrame 的一部分,因此您不应该期望原始 DataFrame 会在您更改data1. 如果您想让警告消失,请先设置data1 = data1.copy()。请参阅 pault 评论中的链接(如何处理 Pandas 中的 SettingWithCopyWarning?)以获取更多信息。


推荐阅读