如何删除包含至少一个缺失元素的数据框的列

时间:2018-10-20 20:55:29

标签: python pandas

我模拟如下数据帧:

import pandas as pd
import numpy as np

# Create Missing Values in DataFrame
df = pd.DataFrame(np.random.randn(5,5))
df[df > 0.9] = pd.np.nan
df.columns = ['A', 'B','C','D','E']
df

我给它的列名分别为A,B,C,D,E。我有这个python代码,可以通过pandas删除包含至少一个缺失值的行,如下所示。

df.loc[(~pd.isnull(df['A']))&\
   (~pd.isnull(df['B']))&\
   (~pd.isnull(df['C']))&\
   (~pd.isnull(df['D']))&\
   (~pd.isnull(df['E']))]

如何实现删除任何行中以及特定行中至少包含一个缺失值的列而不是行?

4 个答案:

答案 0 :(得分:3)

使用df.dropna()删除包含NaN的行/列。了解更多https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html

答案 1 :(得分:2)

考虑布尔选择

df.loc[:, ~df.isnull().any(axis=0)]

答案 2 :(得分:1)

您可以使用isnull()drop

for i in df.columns:
    if df[i].isnull().count() > 0:
        df = df.drop(i, axis=1)

答案 3 :(得分:1)

您可以在指定axis的同时使用dropna

df = df.dropna(axis='columns', how='any')

how的默认值为'any',但可以明确。