用lambda正确应用pandas.apply

时间:2017-11-20 17:09:00

标签: pandas dataframe

如果'max215'大于'max'或小于min2015,如果'min2015'小于'min',我希望我的DataFrame列'extrema'为'max2015'

我认为用df.apply-lambda组合来解决这个问题是最优雅的方法,但我无法用这个解决方案。

代码:

x['extrema'] = x.apply(lambda df: df['max2015'] if df['max2015'] > df['max']
                  else df['min'] if df['min2015'] > df['min']
                  else np.nan,
                  axis=1)

我得到以下结果,这不是正确的解决方案。

Result looks like this

我的错误或其他好的解决方案是什么?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

也许您正在寻找np.select

Import numpy as np  
df = x.copy()
df['extrema'] = np.select([df['max2015']>df['max'],df['min2015']>df['min']],[df['max2015'],df['min2015']],np.nan)