首页 > 解决方案 > 大熊猫,lambda内的比较

问题描述

我有一个函数,它返回具有多个唯一值 <= 100 的 pandas 数据框列的名称:

cols_unique = list(df[cols].loc[:, df[cols].apply(lambda x: x.nunique()) <= 100])

我想更改它以返回唯一值的数量<=值总数的 50% 的列名,我的尝试:

cols_unique = list(df[cols].loc[:, df[cols].apply(lambda x: x.nunique() <= x.count()/2]))

但这不起作用。

如何在 lambda 函数中进行比较?

标签: pythonpandaslambda

解决方案


IIUC 你可以试试:

cols_unique = list(df[cols].loc[:, df[cols].apply(lambda x: x.nunique() <= len(df) / 2)])

如果您愿意接受不使用lambda功能的替代方案,您可以尝试:

 list(cols[df[cols].nunique().le(len(df) // 2)])

推荐阅读