将.copy()应用于熊猫数据帧后出现'NoneType'错误

时间:2016-12-25 09:01:07

标签: python pandas dataframe

我正在将Titanic数据集用于项目。 我首先使用

创建了一个数据框
titanic_df = pd.read_csv("titanic_data.csv")

并应用了一些更改(fillna等)。

现在我想在该数据框中删除几列,但为了避免影响我以前的工作,我想先创建一个这样的副本。所以我做了

titanic_ml = titanic_df.copy().drop(['PassengerId','Name'],axis=1,inplace=True)

然后当我尝试显示信息时

titanic_ml.info()

我收到此错误消息:AttributeError:'NoneType'对象没有属性'info'

如果我将.info()应用到原来的titanic_df,我没有问题。

有人可以告诉我这里我做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:2)

当您使用inplace=True后,您对copy()的返回值进行了更改并返回None

另请注意,drop会返回副本,因此不需要copy方法。

要解决您的问题,请不要使用inplace=True

titanic_ml = titanic_df.drop(['PassengerId','Name'], axis=1)

进一步说明

titantic_df.copy()返回传递给drop的数据框。 drop随后会返回数据帧的副本,而不会请求删除项目。如果您传递inplace=True,它会对对象执行操作并返回None。您分配给变量None的是titanic_ml,这就是您收到错误AttributeError: 'NoneType' object has no attribute 'info'的原因。