下面几行代码给出了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
有人能帮我理解是什么造成了这个警告吗?正确的语法是什么来避免它?
发布于 2020-10-16 16:34:09
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)
https://stackoverflow.com/questions/64392920
复制相似问题