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

BCA*_*Arg 1 python lambda if-statement python-3.x pandas

我有一个如下所示的数据框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]})
Run Code Online (Sandbox Code Playgroud)

对于列a,bc我想提取(到一个列表)的最小值,而列d我想要得到的最大值,即:

[77.26, 94.06, 0.71, 0.29]
Run Code Online (Sandbox Code Playgroud)

我主要是尝试用lambda表达式完成这个

例如,要获得所有最小值,我可以:

df.apply(lambda x:x.min(), axis = 0)
Run Code Online (Sandbox Code Playgroud)

我想过(当然它不起作用):

df_final.apply(lambda x:x.max() if x =='d' else x.min(), axis = 0)
Run Code Online (Sandbox Code Playgroud)

我发现这个问题正在做类似的事情,虽然条件语句是基于每个列的,而我想要基于x列名称的if else语句.事情是,即可迭代对象不是列名.然后我如何应用基于列名的lambda函数的else条件?

jez*_*ael 6

用途numpy.where:

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