无法使用熊猫删除NaN值

时间:2019-01-13 07:57:09

标签: python pandas

我正在尝试使用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)

enter image description here

4 个答案:

答案 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)
相关问题