从较大的证券数据分析中,我有以下脚本,
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
答案 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)