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,b和c我想提取(到一个列表)的最小值,而列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条件?
用途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)