Python Pandas:检查行中的所有列值是否为NaN

2024-09-27 04:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我的问题已经得到答复,请接受我的歉意。我试图找到一个解决方案,但我所能找到的只是在一个数据帧中为所有NaN的dropna解决方案。 我的问题是我有一个6列500行的数据框。我需要检查任何特定行中的所有值是否都是NaN,以便从数据集中删除它们。第2、6和7行下面的示例包含从col1到col6的所有Nan:

    Col1    Col2    Col3    Col4    Col5    Col6
    12      25      02      78      88      90
    Nan     Nan     Nan     Nan     Nan     Nan
    Nan     35      03      11      65      53
    Nan     Nan     Nan     Nan     22      21
    Nan     15      93      111     165     153
    Nan     Nan     Nan     Nan     Nan     Nan
    Nan     Nan     Nan     Nan     Nan     Nan
    141     121     Nan     Nan     Nan     Nan

请注意,第一行只是标题,从第二行开始我的数据。如果有人能帮助我朝着正确的方向解决这个难题,我将不胜感激。

我的第二个问题是,在删除所有列中的所有Nan之后,如果我想删除缺少4列或5列数据的行,那么什么是最好的解决方案。

最后一个问题是,在删除了大多数Nan的行之后,我如何在剩下的450行上创建box plot?

如有任何回应,将不胜感激。

谨致问候


Tags: 数据示例nan解决方案col2col3col1col4
2条回答

I need to check if in any particular row all the values are NaN so that I can drop them from my dataset.

这正是^{}所做的:

In [3]: df = pd.DataFrame({'a': [None, 1, None], 'b': [None, 1, 2]})

In [4]: df
Out[4]: 
     a    b
0  NaN  NaN
1  1.0  1.0
2  NaN  2.0

In [5]: df.dropna(how='all')
Out[5]: 
     a    b
1  1.0  1.0
2  NaN  2.0

关于您的第二个问题,^{}将这样做。可以使用column参数指定所需的列(如果需要)。另见the example in the docs

对于那些想知道题目的搜索:

Check if all columns in rows value is NaN

一个简单的方法是:

df[[list_of_cols_to_check]].isnull().apply(lambda x: all(x), axis=1) 

import pandas as pd
import numpy as np


df = pd.DataFrame({'movie': [np.nan, 'thg', 'mol', 'mol', 'lob', 'lob'],
                  'rating': [np.nan, 4., 5., np.nan, np.nan, np.nan],
                  'name':   ['John', np.nan, 'N/A', 'Graham', np.nan, np.nan]}) 
df.head()

enter image description here


要检查所有列是否为NaN:

cols_to_check = df.columns
df['is_na'] = df[cols_to_check].isnull().apply(lambda x: all(x), axis=1) 
df.head() 

enter image description here


要检查列“name”、“rating”是否为NaN,请执行以下操作:

cols_to_check = ['name', 'rating']
df['is_na'] = df[cols_to_check].isnull().apply(lambda x: all(x), axis=1) 
df.head()  

enter image description here

相关问题 更多 >

    热门问题