2015-12-13 2 views
2

Mes données sont des données des cours boursiers intraday, plusieurs jours. Ceci est une version simplifiée:Comment exécuter une requête conditionnelle qui sélectionne la première occurrence uniquement dans Pandas?

  Close dif             
2015-01-02 2035.25 -1.30      
2015-01-02 2015.25 -3.18 
2015-01-05 2035.25 -1.35      
2015-01-05 2015.25 -4.18     
2015-01-06 1988.00 -2.30      
2015-01-06 1988.00 -2.32 

J'utilise une instruction conditionnelle en pandas géants de la forme:

data['Test'] = "" 
data.loc[(data['dif'] < 0) & (data['dif'] > -100), 'Test'] = data['Close'] 

Je suis frappé un barrage routier parce que je cherche uniquement à la première fois que le la condition est remplie chaque jour. Comment puis-je accomplir cela?.

Ce serait la sortie:

  Close dif Test            
2015-01-02 2035.25 -1.30 2035.25      
2015-01-02 2015.25 -3.18 
2015-01-05 2045.25 -1.35 2045.25     
2015-01-05 2015.25 -4.18     
2015-01-06 1989.00 -2.30 1989.00     
2015-01-06 1988.00 -2.32 

Merci

Répondre

2

Pour sélectionner le premier élément de chaque groupe par jour qui répond à votre condition:

data[(data['dif'] < 0) & (data['dif'] > -100)].groupby('date')['Close', 'dif'].first() 

pour obtenir:

  Close dif 
date     
1/2/15 2035.25 -1.30 
1/5/15 2035.25 -1.35 
1/6/15 1988.00 -2.30