首先我道歉,我知道有很多线程在讨论这个问题,因为我还没有找到一个讨论groupby的情况 我想确保我理解这里发生的事情。以下代码引发了SettingOnCopy警告:
def func(x):
if len(x) > 1:
x.iloc[1:] = 0
return x
df_grouped = df.groupby(['col1', 'col2'], as_index=False)['col2']
df['col2'] = df_grouped.transform(func)
我试图理解导致此警告的问题,我的理解是警告是由链接分配引起的,如文档中所述,我相信这是因为x是df的子集然后我修改了x。
因此据报道,我们不确定是否试图通过x更改df或仅将x视为df的副本,我的搜索表明第二种情况下的标准做法是明确指定x = df [some_subset]。 copy(),但在我的情况下,我打算改变df。
我理解正确吗? 可以避免这种链式任务吗? 这种情况下的标准做法是什么? 在这种情况下压制警告是否安全?
任何帮助clarifyin将不胜感激
一切顺利。