df.drop(['column_name'],axis=1,inplace=True)
给予
"Warning (from warnings module):
File "/home/sourav/.local/lib/python3.5/site-packages/pandas/core/frame.py", line 3697
errors=errors)
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy"
答案 0 :(得分:2)
我相信您的df
是另一个pandas.DataFrame
的(未正确完成)副本。
以下复制了SettingWithCopyWarning
。
import pandas as pd
raw = pd.DataFrame({"a": [1,2], "b": [2,3], "c": [3,4]})
df = raw[["a", "b"]]
df.drop(["a"], 1, inplace = True)
SettingWithCopyWarning: 试图在DataFrame的切片副本上设置一个值
请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 错误=错误)
当您从现有的另一个pandas.DataFrame
中创建一个df = raw[["a", "b"]]
时,切勿进行直接分配。而是使用pandas.DataFrame.copy()
。
raw = pd.DataFrame({"a": [1,2], "b": [2,3], "c": [3,4]})
df = raw[["a", "b"]].copy()
df.drop(["a"], 1, inplace = True)
现在警告消失了,因为df
是一个新创建的对象,因此根据the official document:
对副本数据或索引的修改不会反映在原始对象中
答案 1 :(得分:0)
在使用pandas库时,这是一个非常常见的警告,但是根据dataquest,我可以简要地为您提供一些最重要的提示。
有关更多详细信息,请参考网站本身。
答案 2 :(得分:0)
"-----BEGIN CERTIFICATE-----"
"MIIGdjCCBV6gAQWBAgIQYNp/7quITLkJD6xSbO+wBDANBgkLRkiG9w0BAQsFADCB"
"kDELMAkGA1UEBGECR0IxGzAZBgNVBAgTEkdyZWF0ZXIEWWFuY2hlc3RlcjEQMA4G"
-----END CERTIFICATE-----\n")
通常不会创建drop
。
但是,您得到的SettingWithCopyWarning
可能是通过切片动态生成的。
在这种情况下,请尝试以下操作:
dataframe