我有一个函数,该函数返回具有许多唯一值<= 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函数中进行比较?
答案 0 :(得分:2)
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)])