Py学习  »  Python

Drop函数不处理python的数据帧[duplicate]

sourav agarwal • 5 年前 • 2081 次点击  

这个问题已经有了答案:

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"
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49692
 
2081 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Yogesh Patel Rishabh Bhandari
Reply   •   1 楼
Yogesh Patel Rishabh Bhandari    6 年前

这个 drop 通常不会产生 SettingWithCopyWarning .
但有可能 dataframe 你得到的是通过切片动态生成的。

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

data_new = data.drop('columnname', axis= 1)
Meysam Azad
Reply   •   2 楼
Meysam Azad    6 年前

在熊猫图书馆工作时,这是一个非常常见的警告,但是根据 dataquest ,简而言之,我可以给你一些最重要的提示。

  • 首先要了解的是,setingwithcopywarning是 警告,不是错误。
  • 如果您的代码仍然作为 预期。这是不好的做法,设置copywarning应该 永远不要被忽视。花点时间了解你为什么 采取行动前的警告。

我建议您访问网站本身以获取更详细的信息。

Chris
Reply   •   3 楼
Chris    6 年前

我相信你 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)

设置为复制警告: 试图在数据帧切片的副本上设置值

请参阅文档中的注意事项: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 错误=错误)

当你再做一个 熊猫.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)

现在警告消失了,因为 数据框 是一个新的对象,因此根据 the official document :

对副本数据或索引的修改不会反映在原始对象中