Python中多个列之间的条件总和

时间:2018-10-14 20:45:56

标签: python pandas

从较大的证券数据分析中,我有以下脚本,

returns_columns = []

df_merged[ticker + '_returns'] = df_merged[ticker + '_close'].pct_change(periods=1)
returns_columns.append(ticker + '_returns')

df_merged['applicable_returns_sum'] = (df_merged[returns_columns] > df_merged['return_threshold']).sum(axis=1)

'return_threshold'是完整的浮点数系列。

我已经能够成功地对returns_columns数组中的每一行求和,但无法弄清楚如何有条件地仅对returns_columns中大于res {{1}的数字求和}。

这似乎是一个与此处显示的问题Python Pandas counting and summing specific conditions类似的问题,但是我试图根据'return_threshold'中的变化情况求和。

任何帮助将不胜感激,一如既往的感谢!

编辑:另一种方法 这是我尝试过的另一种方法。即使我认为有必要,下面的脚本也有一个与returns_columns输入相关的错误,然后产生了错误:

ticker

2 个答案:

答案 0 :(得分:1)

数据框的[]运算符应允许您按表达式df > threshold进行过滤并返回数据框。然后,您可以在此df上致电.sum()

df[df > threshold].sum()

答案 1 :(得分:0)

回答了这样的问题:

def compute_applicable_returns(row, ticker):
    if row[ticker + '_returns'] >= row['return_threshold']:
        return row[ticker + '_returns']
    else:
        return 0

for ticker in tickers:
    df_merged[ticker + '_applicable_returns'] = df_merged.apply(compute_applicable_returns, args=(ticker,), axis=1)