Python / Pandas:列的条件求和

时间:2016-05-07 16:00:53

标签: python numpy pandas dataframe

在python中我有一个类似于下面的pandas数据框:

           | AUG12               | UNDERLYING | VOL |
           |---------------------|            |     |
           | 45  | 49  | 50 | 55 |            |     |
====================================================|
2012-11-14 | 1   | 1   | 2  | 3  | 49         | ?   |
...          ...   ...   ...   ...  

任务是:对于每一行,找到大于UNDERLYING(49)的列名,将值(2 + 3)相加并将结果放入VOL(5)。我怎么能在python中完成这个?非常感谢提前!

1 个答案:

答案 0 :(得分:1)

您可以使用DataFrame.apply函数

def conditional_sum(row):
    underlying = row['UNDERLYING'][0]  # extra '[0]' is required due to multi leve index in column names
    return row.loc['AUG12'].apply(lambda x: 0 if x < underlying else x).sum()

df.apply(conditional_sum, axis=1)