Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用Pandas删除NaN值_Python_Pandas - Fatal编程技术网

Python 无法使用Pandas删除NaN值

Python 无法使用Pandas删除NaN值,python,pandas,Python,Pandas,我试图使用Panda提供的dropna()方法删除NaN值。我已经阅读了文档并查看了其他StackOverflow帖子,但仍然无法修复错误 对于我的代码,我将首先读取一个excel文件。如果行的值为“-”,我会将其更改为NaN值。之后,我将使用方法dropna()删除NaN值。然后,我会将dropna()方法的结果重新分配给名为mydf2的新变量。下面是我的代码和屏幕截图 mydf = pd.read_excel('pandas lab datasets/singstats_maritalsta

我试图使用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)

听起来像
NaN
是一个字符串,所以:

mydf2 = mydf.replace('-',np.nan).dropna()

听起来这里的
NaN
是一个字符串,所以:

mydf2 = mydf.replace('-',np.nan).dropna()

我在这里写了一段代码,它可以很好地处理我的数据,所以试试这个

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)

我在这里写了一段代码,它可以很好地处理我的数据,所以试试这个

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)

由于您尚未发布数据,我不确定是否每一行都有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)

由于您尚未发布数据,我不确定是否每一行都有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)
dropna()工作正常。您有两个print语句。第一个语句按照
print(mydf.head(5))
的要求打印了五行

第二个打印语句
print(mydf2)
的输出是一个空数据框[0行37列],因为显然每行都有一个NaN。(请参见屏幕截图底部)

dropna()工作正常。您有两个打印语句。第一个打印语句按照
print的要求打印了五行(mydf.head(5))


第二个打印语句
print(mydf2)
的输出是一个空数据框[0行37列],因为每一行都有一个NaN。(请参见屏幕截图底部)

您好,我尝试了您的代码,但仍然不起作用。我使用mydf.dtypes检查了每个列的数据类型。我发现带有NaN值的列实际上是浮动的64。我该怎么办?@Issaki您确定
mydf2=mydf.dropna()
不起作用?是的,我已经仔细检查了我的代码,但仍然不起作用work@Issaki当您更改此行时,我的代码是否有效:
mydf=pd.read\u excel('pandas lab datasets/singstats\u maritalstatus.xlsx',na\u values='-')
mydf=pd.read\u excel('pandas lab datasets/singstats\u maritalstatus.xlsx'))
?它不起作用。因为值“-”没有注册为NaN值Hi,我尝试了你的代码,但仍然不起作用。我用mydf.dtypes检查了每列的数据类型。我意识到带有NaN值的列实际上是浮动的64。我该怎么办?@Issaki你确定
mydf2=mydf.dropna()
不起作用?是的,我已经仔细检查了我的代码,但仍然不起作用work@Issaki当您更改此行时,我的代码是否有效:
mydf=pd.read\u excel('pandas lab datasets/singstats\u maritalstatus.xlsx',na\u values='-')
mydf=pd.read\u excel('pandas lab datasets/singstats\u maritalstatus.xlsx'))
?它不起作用。因为值“-”未注册为NaN值,但我的目标是删除所有值为“-”的行。因此,我必须使用na_值=“-”将“-”转换为NaN值。然后,我将使用dropna()。但我的目标是删除所有值为“-”的行。”。因此,我必须使用na_values='-'将'-'转换为NaN值。然后,我将使用dropna()。如果您的目的是删除包含NaN值的列,则语句应为mydf2=mydf.dropna(axis=1),因为默认值是axis=0,它会删除行。如果您的目的是删除包含NaN值的列,那么语句应该是mydf2=mydf.dropna(axis=1),因为默认值是axis=0,它会删除行。