pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame
Posted 集电极
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame相关的知识,希望对你有一定的参考价值。
pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame
我在抽取了原来DataFrame数据的几列后,对抽取后的数据进行赋值操作时弹出这个警告。
这个警告的后果是可能导致修改
pandas
单元格中的数据失败。
样例代码如下
# 弹出警告的代码
dfc = pd.DataFrame('a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7])
dfc2 = dfc[['a']]
dfc2['a'][0] = 100
解决方法一
这个是深浅拷贝的警告
我对其进行一次深拷贝即可解决,这种方式可能会失效
。
# 不 弹出警告的代码
dfc = pd.DataFrame('a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7])
dfc2 = dfc[['a']]
dfc2 = dfc2.copy() # 进行一次拷贝
dfc2['a'][0] = 100
解决方法二
换一种方式对 pandas
单元格进行修改
dfc = pd.DataFrame('a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7])
dfc2 = dfc[['a','b']]
# 这个命令不会警告
dfc2.loc[3, 'b'] = 'english'
注意:
loc
有一个很类似的api,即iloc
,但我在使用dfc2.iloc[0][0] =111
修改单元格数据时弹出警告,而且修改数据失败。
以上是关于pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame的主要内容,如果未能解决你的问题,请参考以下文章
[Python Debug] SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a Data
已解决FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future
python 使用“is in”切片Pandas DataFrame(来自http://stackoverflow.com/questions/12096252/use-a-list-of-value
python pandas进行条件筛选时出现ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a
tried accessing the SQLite plugin but Cordova is not available