熊猫。删除除1列以外所有缺少值的列

时间:2020-04-19 08:33:57

标签: python pandas

假设我们有一个数据框,其中包含以下列'Age', 'Name', 'Sex',其中'Age''Sex'包含缺失值。我想删除所有缺失值的列,只有一列'Age'除外。这样我就有了2个列“名称”和“年龄”的df。我该怎么办?

1 个答案:

答案 0 :(得分:2)

这应该可以满足您的需求:

import pandas as pd
import numpy as np

df = pd.DataFrame({
  'Age'  : [5,np.nan,12,43], 
  'Name' : ['Alice','Bob','Charly','Dan'],
  'Sex'  : ['F','M','M',np.nan]})

df_filt = df.loc[:,(-df.isnull().any()) | (df.columns.isin(['Age']))]

说明:

df.isnull().any())检查所有列,如果值是NoneNaN,则-意味着只选择那些不 符合该条件。

df.columns.isin(['Age'])检查所有列的名称是否为“年龄”,以便在任何情况下都可以选择此列。

两个条件都通过一个OR(|)进行连接,因此,如果任一条件适用,都会选择该列。