2016-02-04 1 views
0

je dois résumer séparément toutes les valeurs positives et négatives dans une colonne à savoirSéparation des valeurs positives et négatives des pandas géants 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] 

Voici un échantillon de données

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 

Quelle est une belle façon de faire chez les pandas?

EDIT:

Je suis en mesure de faire cela grâce à quelques gerbeurs utiles, je réalise je ne peux pas un calcul futher cependant. ? `

if prediction_at_ohlcv_end_date > 0 : 
return = prediction_at_ohlcv_end_date * next_future_timestep_return. 

Pour chaque élément dans le cadre, toutes les idées`

Répondre

2

Vous pouvez utiliser la méthode sum de pandas.Series pour votre colonne particulière:

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 

Pour vos valeurs:

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] 

EDIT

Pour votre édition, vous pouvez faire:

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 
+0

Vous pouvez également utiliser 'query' pour raccourcir les commandes un peu.' Pos = df.query ('prediction_at_ohlcv_end_date> 0) somme() ' – kazemakase

+0

Hey, merci beaucoup. Vraiment grande aide. Il semble que j'ai oublié une opération de plus que je dois faire, une chance que vous pourriez regarder mon montage? –