我用的是熊猫17.1。关于如何处理SettingWithCopyWarning的问题已经被广泛讨论过了,但我不认为the most popular thread这样的方法能够解决我的用例,即为列分配标量。你知道吗
我的代码:
df.loc[:, "some_col_name"] = 0
假设名为“some\u col\u name”的列已经存在;这并不是添加该列(如果这样的语句可以)。你知道吗
它正在生成一个带有copywarning的设置,就我的一生而言,我不知道为什么。你知道吗
当我开始工作的时候df.is\u副本=首先是False,但是如果可能的话,我宁愿每次这样做时都避免使用额外的语句。你知道吗
我做错什么了?你知道吗
谢谢!你知道吗
对johnchase答案的后续响应:df是由groupby语句创建的(见下文),所以我不确定在.copy中添加到何处。我提到的补救方法是有效的,但我必须这么做,这意味着pandas让groupby迭代没有意识到它们是拷贝。(不过,他们是对的?)你知道吗
for some_ix, df in bigger_df.groupby(cols_I_care_about):
df.loc[:, "some_col_name"] = 0
我的猜测是
df
是一个从以前存在的数据帧创建的数据帧。请参见以下内容:这将导致
SettingWithCopyWarning
。下一个代码块不会产生SettingWithCopyWarning
pandas警告您可能正在修改原始数据帧。您可以使用
.copy()
方法来确保您正在创建一个新的数据帧,而不是像您所做的那样修改原始数据帧或df.is_copy = False
。我不同意你的解决方案是一种逃避,但是我更喜欢在创建新的数据帧时使用.copy()
,因为它不太容易出错。你知道吗相关问题 更多 >
编程相关推荐