我正在尝试使用Panda提供的dropna()方法删除NaN值。我已经阅读了该文档,并查看了其他StackOverflow帖子,但仍然无法修复该错误。
对于我的代码,我将首先读取一个excel文件。如果行的值为“-”,则将其更改为NaN值。之后,我将使用dropna()方法删除NaN值。然后,我将dropna()方法的结果重新分配给一个名为mydf2的新变量。以下是我的代码和屏幕截图
mydf = pd.read_excel('pandas lab datasets/singstats_maritalstatus.xlsx',
na_values='-')
mydf = mydf.set_index(['Variables'])
print(mydf.head(5)) # Original data
mydf2 = mydf.dropna()
print(mydf2)
答案 0 :(得分:3)
dropna()正常工作。您有两个打印语句。第一个已按print(mydf.head(5))
的要求打印了五行。
第二个打印语句print(mydf2)
的输出是一个空的数据框[0行37列],因为显然每一行都有一个NaN。 (请参见屏幕截图的底部)
答案 1 :(得分:1)
我在这里写了一段代码,可以很好地处理我的数据,所以请尝试一下。
mydf = pd.read_excel('pandas lab datasets/singstats_maritalstatus.xlsx')
to_del = []
for i in range(mydf.shape[0]):
if "-" in list(mydf.iloc[i]):
to_del.append(i)
out_df = mydf.drop(to_del, axis=0)
答案 2 :(得分:0)
听起来像NaN
是一个字符串,也是这样:
mydf2 = mydf.replace('-',np.nan).dropna()
答案 3 :(得分:0)
由于您尚未发布数据,因此不确定每一行是否都具有NaN值。如果是这样,则df.dropna()将仅删除每一行。例如,列1981和1982都是图像中的NaN值。使用df.dropna(axis=1)
将删除这两列,并且不会返回空的df。
df = pd.DataFrame({'Variables':['Total','Single','Married','Widowed','Divorced/Separated'],
'1980':range(5),
'1981':[np.nan]*5})
df.set_index('Variables')
df.dropna(axis=1)