我需要在列中单独汇总所有正值和负值,即
pos_values = [x for x in df.prediction_at_ohlcv_end_date if x > 0]
neg_values = [x for x in df.prediction_at_ohlcv_end_date if x < 0]
这是一个数据样本
market_trading_pair next_future_timestep_return ohlcv_start_date prediction_at_ohlcv_end_date
0 Poloniex_ETH_BTC 0.003013 1450753200 -0.157053
1 Poloniex_ETH_BTC -0.006521 1450756800 -0.920074
2 Poloniex_ETH_BTC 0.003171 1450760400 0.999806
3 Poloniex_ETH_BTC -0.003083 1450764000 0.627140
4 Poloniex_ETH_BTC -0.001382 1450767600 0.999857
在熊猫中这样做的好方法是什么?
编辑:
由于一些有用的堆叠器,我能够做到这一点,但我意识到我无法进行更进一步的计算。 `
if prediction_at_ohlcv_end_date > 0 :
return = prediction_at_ohlcv_end_date * next_future_timestep_return.
对于框架中的每个元素,任何想法?`
答案 0 :(得分:2)
您可以使用pandas.Series
的方法sum
作为您的特定列:
neg = df.prediction_at_ohlcv_end_date[df.prediction_at_ohlcv_end_date < 0].sum()
pos = df.prediction_at_ohlcv_end_date[df.prediction_at_ohlcv_end_date >= 0].sum()
In [51]: pos
Out[51]: 2.6268029999999998
In [52]: neg
Out[52]: -1.077127
为了你的价值观:
pos_values = df.prediction_at_ohlcv_end_date[df.prediction_at_ohlcv_end_date >= 0]
neg_values = df.prediction_at_ohlcv_end_date[df.prediction_at_ohlcv_end_date < 0]
修改强>
您可以进行编辑:
mask = df.prediction_at_ohlcv_end_date >= 0
res = df.prediction_at_ohlcv_end_date[mask] * df.next_future_timestep_return[mask]
In [10]: res
Out[10]:
2 0.003170
3 -0.001933
4 -0.001382
dtype: float64