分离pandas DataFrame的正负值

时间:2016-02-04 15:15:22

标签: python pandas dataframe

我需要在列中单独汇总所有正值和负值,即

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. 

对于框架中的每个元素,任何想法?`

1 个答案:

答案 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