删除功能不适用于python的数据框

时间:2018-12-28 06:18:02

标签: python pandas dataframe

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"

3 个答案:

答案 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,我可以简要地为您提供一些最重要的提示。

  • 首先要了解的是SettingWithCopyWarning是一个 警告,而不是错误。
  • 如果您的代码仍然可以正常工作,可能会忽略该警告。 预期。这是不良做法,SettingWithCopyWarning应该 永远不会被忽视。花一些时间来了解为什么 警告,然后再采取行动。

有关更多详细信息,请参考网站本身。

答案 2 :(得分:0)

"-----BEGIN CERTIFICATE-----" "MIIGdjCCBV6gAQWBAgIQYNp/7quITLkJD6xSbO+wBDANBgkLRkiG9w0BAQsFADCB" "kDELMAkGA1UEBGECR0IxGzAZBgNVBAgTEkdyZWF0ZXIEWWFuY2hlc3RlcjEQMA4G" -----END CERTIFICATE-----\n") 通常不会创建drop
但是,您得到的SettingWithCopyWarning可能是通过切片动态生成的。

在这种情况下,请尝试以下操作:

dataframe