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

js为什么报错(intermediate value)(...) is not a function