以下代码中出现错误。不明白为什么。在代码的最后一行出现错误。请告知必须做些什么来纠正它。除此之外,df.isna()。any()也不起作用。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv('BlackFriday.csv')
df = pd.DataFrame(data)
df.info()
df.describe()
df.head()
#To check the unique values of Product Categories 2, 3 and then assign a default value accordingly for NaN's
Product_Category_2 = df['Product_Category_2'].unique()
Product_Category_3 = df['Product_Category_3'].unique()
print('Product_Category_2', Product_Category_2)
print('Product_Category_3', Product_Category_3)
df = df.fillna(0, inplace=True)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-16-7f28e582ea84> in <module>()
1 #We can replace the NaN's with 0.
----> 2 df = df.fillna(0, inplace=True)
3
AttributeError: 'NoneType' object has no attribute 'fillna'
答案 0 :(得分:1)
我看到的第一个问题是pd.read_csv
已经创建了一个数据框,因此您无需再将其分配给一个数据框。
然后,您的主要问题:不能在同一分配操作中同时使用inplace=True
和df=df.fillna()
。 inplace=True
使fillna
方法返回None
,然后将其分配给df。可以,并且将变量分配给None
,但是除非您尝试重新运行该行代码或在运行它之后引用该数据框,否则不会引起您所看到的错误。
df=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,0],'c':[None,None,1,2,None]})
a b c
0 1 6 NaN
1 2 7 NaN
2 3 8 1.0
3 4 9 2.0
4 5 0 NaN
正确:
要么
df.fillna(0,inplace=True)
OR
df=df.fillna(0)
df
a b c
0 1 6 0.0
1 2 7 0.0
2 3 8 1.0
3 4 9 2.0
4 5 0 0.0
不正确:
df=df.fillna(0, inplace=True)
print(df)
None