我正在将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,我没有问题。
有人可以告诉我这里我做错了什么吗?谢谢!
答案 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'
的原因。