python - 大熊猫,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 函数中进行比较?
解决方案
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)])
推荐阅读
- sql - 如何区分大小写?
- elasticsearch - 在 Elasticsearch 中使用 from/size - “在滚动上下文中不允许使用 [from]”
- reactjs - 如果父组件多次渲染,是否可以控制子组件进行反应?
- ios - 发布到 ios 商店失败并显示“使用应用专用密码登录”
- angular - 如何将 mat-card-image 高度设置为 100%?
- python - 在 Python 中在 2D 图像上绘制 3D 对象
- javascript - React Native 中 ios/build 文件夹的作用是什么?
- javascript - 对 Material UI 开关提出请求
- jsf - JSF 或 Primefaces 组件
- git - 从不同项目的不同目录执行 git pull 但使用相同的代码