我有一个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()