如何获取列子集中唯一值计数大于特定数字的列的列名



我有一个pandas数据框架,并将列划分为数字列和分类列。我已将分类列命名为cat_cols。现在,我正在尝试查找cat_cols中唯一值数量大于10的列。

我的代码:

data[cat_cols].nunique() > 10

输出

1     True
2     True
3     True
4    False
5    False
dtype: bool

如何将column_ames1,2,3直接存储在列表中?

我已经手动存储了它们,但当我循环浏览这些列时,会遇到一个问题。我的代码

cat_cols_with_high_card = ['1','2','3']
for col in cat_cols_with_high_card:
print('column: '+str(col))
#data[str(col)]
data[col].value_counts()

输出:

column: 1
column: 2
column: 3

但是数据或值计数没有打印出来,我怀疑列名被理解为int可能有问题。我的分类代码:

print(cat_cols)

输出

['1', '2', '3', '4', '5', '6', '7', '8']

我哪里错了?我正在使用Jupyter笔记本执行死刑。

您可以尝试使用您的代码作为列变量(如(的标准

data[cat_cols].loc[:, data[cat_cols].nunique() > 10].columns

或者只是

data.loc[:, data[cat_cols].unique() > 10].columns

尝试

(data[cat_cols].nunique() > 10).loc[lambda x : x].index.tolist()

最新更新