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