Skip to main content
 首页 » 编程设计

python之基于列名在 pandas 数据框的 lambda 表达式上使用 if else 语句

2025年05月04日9zhwl

我有一个数据框 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) 

我找到了 this question这是做类似的事情,虽然条件语句是基于每列的值,而我想要我的 if else 语句基于列名。事情是 x 即可迭代对象不是列名。那么我如何根据列名应用 if else 条件和 lambda 函数?

请您参考如下方法:

使用numpy.where :

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