假设我们有一个数据框,其中包含以下列'Age', 'Name', 'Sex'
,其中'Age'
和'Sex'
包含缺失值。我想删除所有缺失值的列,只有一列'Age'
除外。这样我就有了2个列“名称”和“年龄”的df。我该怎么办?
答案 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())
检查所有列,如果值是None
或NaN
,则-
意味着只选择那些不 符合该条件。
df.columns.isin(['Age'])
检查所有列的名称是否为“年龄”,以便在任何情况下都可以选择此列。
两个条件都通过一个OR(|
)进行连接,因此,如果任一条件适用,都会选择该列。