如何根据pandas中的true / false条件选择列

时间:2017-11-12 03:28:41

标签: python pandas

我想选择以下内容为真的列。

mask = df.select_dtypes(include = ['object']).apply(pd.Series.nunique) > 100

rbc      False
pc       False
pcc      False
ba       False
htn      False
dm       False
cad      False
appet    False
pe       False
ane      False
class    False
lev_a     True
lev_b     True
l_x      False
dtype: bool

2 个答案:

答案 0 :(得分:2)

将结果用作布尔掩码

df.loc[:, mask]

答案 1 :(得分:2)

问题可能是掩码中的行数与原始数据帧中的行数不同(假设您的列是对象和非对象的混合)。

根据您的设置,这应该返回满足您的标准的列(您可以将其用作loc[]的输入):

mask.index[mask]

你想在这里说mask.index而不是mask.columns,因为你的面具是一个大熊猫系列,其中索引由原始数据框df中的列组成。

以下是一个包​​含示例数据的更完整示例(在将来的问题中,请提供您自己的示例数据,您通常会获得更多更好的答案):

df = pd.DataFrame( np.random.choice(list('abcde'),[10,5]), 
                          columns=list('ABCDE'))

mask = df.select_dtypes(include=['object']).apply(pd.Series.nunique) > 4

mask.index[mask]

结果:

Index(['B', 'C'], dtype='object')