熊猫:SettingWithCopyWarning:

时间:2017-07-18 14:55:38

标签: python pandas

我尝试使用以下代码将列转换为" date":

df.['DATE'] =  pd.to_datetime(df['DATE'])

df.DATE =  pd.to_datetime(df.DATE)

但是我收到以下错误:

  

/Users/xyz/anaconda3/envs/sensor/lib/python3.6/site-packages/pandas/core/indexing.py:517:   SettingWithCopyWarning:尝试在a的副本上设置值   从DataFrame切片。尝试使用.loc [row_indexer,col_indexer] =   代替值

     

请参阅文档中的警告:   http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy   self.obj [item] = s

我将代码更改为以下内容:

df.loc[:,'DATE'] =  pd.to_datetime(df.loc[:,'DATE'])

但我仍然得到同样的错误。

与此相同

for i in df.index:
    df.loc[i,'DATE'] =  pd.to_datetime(df.loc[i,'DATE'])

2 个答案:

答案 0 :(得分:3)

您需要添加copy

df = data.loc[data.ID == 79]

为:

df = data.loc[data.ID == 79].copy()

如果稍后修改df中的值,您会发现修改不会传播回原始数据(data),并且Pandas会发出警告。

答案 1 :(得分:2)

问题在于您没有向我们展示过的代码。在某个地方,你做过这样的事情:

df = other.loc[something]

这是此错误消息的根本原因。您需要使用.loc或类似内容直接分配到原始DataFrame:

other.loc[something, 'DATE'] = whatever