我想选择以下内容为真的列。
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
答案 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')