python - 在基于列名的 pandas 数据帧上对 lambda 表达式使用 if else 语句
问题描述
我有一个df
如下所示的数据框:
import pandas as pd
df = pd.DataFrame({'a':[78.78, 77.26], 'b':[94.47,94.06], 'c':[0.72, 0.71], 'd':[0.19, 0.29]})
对于列a
,我想提取(到列表中)最小值,而对于列,b
我想获得最大值,即:c
d
[77.26, 94.06, 0.71, 0.29]
我主要是想用 lambda 表达式来完成这个
例如,要获取所有最小值,我可以:
df.apply(lambda x:x.min(), axis = 0)
我想到了类似的东西(当然它不起作用):
df_final.apply(lambda x:x.max() if x =='d' else x.min(), axis = 0)
我发现这个问题正在做类似的事情,尽管条件语句基于每列的值,而我希望我的 if else 语句基于列名。问题是,x
可迭代对象不是列名. 然后,我如何根据列名应用带有 lambda 函数的 if else 条件?
解决方案
使用numpy.where
:
a = np.where(df.columns == 'd', df.max(), df.min()).tolist()
print (a)
[77.26, 94.06, 0.71, 0.29]
推荐阅读
- django - django表单的两阶段提交
- codeigniter - 页码 url 分页 CodeIgniter
- python - 我正在尝试登录 discord 但我收到错误代码
- javascript - FullCalendar React - 如何将 selectConstraint 与 Display Background & Inverse 的背景事件一起使用
- python - Pickle Telethon 消息抛出“无法腌制 '_asyncio.Future' 对象”
- sql-server - 如何根据前一行获取下一行值,不包括 SQL Server 中的周末?
- javascript - 滚动元素内 HTML 元素的边界矩形
- google-cloud-platform - GCP PubSub 长轮询
- angular - 我应该如何根据 Angular 中的 Cookie 设置来管理模块的加载?
- autodesk-forge - Autodesk Forge Viewer - 近端和远端剪裁问题