首页 > 解决方案 > 在基于列名的 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我想获得最大值,即:cd

[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 条件?

标签: pythonpython-3.xpandasif-statementlambda

解决方案


使用numpy.where

a = np.where(df.columns == 'd', df.max(), df.min()).tolist()
print (a)
[77.26, 94.06, 0.71, 0.29]

推荐阅读