以下代码行给了我SettingWithCopyWarning
。我已尝试按照与此主题相关的其他许多答案中的建议使用.copy()
,但似乎无法警告我消失。导致错误的代码行是调用iloc
的最后一行。但是我不明白为什么这应该是个问题。
import numpy as np
import pandas as pd
df=pd.DataFrame(np.arange(100), columns =['col1'])
df['col2']=df.loc[:,'col1'].diff()
df['col2'].iloc[0]=0
有人可以帮助我了解造成此警告的原因以及避免该警告的正确语法吗?
答案 0 :(得分:0)
df['col2'].iloc[0]=0
使用chained indexing,因此出现错误
df['col2']
索引一次.loc[0]
编制索引这在大熊猫上被皱眉了(并且常常表现得很不直观)。相反,请考虑以下“正确”的方法来做同样的事情:
df.loc[0,'col2'] = 0
df.at[0,'col2'] = 0
df.iloc[0, df.columns.get_loc('col2')] = 0
或者考虑
df.fillna(0, inplace=True)