在python的pandas中使用.loc的正确方法

时间:2016-06-10 13:26:29

标签: python pandas dataframe warnings

尝试使用pandas数据帧将一列数字从object更改为float dtypes时,收到以下警告:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

现在,代码运行得很好,但是什么是避免此警告仍然达到以下目标的正确和预期的方法:

df2[col] = df2[col].astype('float')

需要注意的是,df2是df1的子集,使用类似于:

的条件
df2 = df1[df1[some col] == value]

1 个答案:

答案 0 :(得分:2)

使用copy方法。而不是:

df2 = df1[df1[some col] == value]

只需写下:

df2 = df1[df1[some col] == value].copy()

最初,df2df1的切片,而不是新的数据帧。这就是为什么当你尝试修改它时,python会引发错误。