2016-12-12 4 views
0

I wie unten ein Beispielzeitreihendaten (Lager) haben:Pandas: Anfügen Spalte mit Bedingung

    Date PX_OPEN PX_LAST 
Date         
2011-01-03 2011-01-03 31.18 31.26 
2011-01-04 2011-01-04 31.42 31.02 
2011-01-05 2011-01-05 31.10 30.54 
2011-01-06 2011-01-06 30.66 30.54 
2011-01-07 2011-01-07 31.50 30.66 
2011-01-10 2011-01-10 30.82 30.94 

I GAP eine neue Spalte hinzufügen möchten, basierend auf den folgenden Bedingungen:

  • Wenn der aktuelle Tagesbeginn höher als der vorherige Tag ist, dann GAP = up.
  • Wenn der aktuelle Tagesanfang niedriger als der vorherige Tag ist, dann GAP = down.
  • Sonst GAP = unch. (Alternativ kann bis zu 1 geändert werden, bis auf -1 und unch auf 0.)

Ich kann dies tun mit, ob und für Schleife, aber das würde die Effizienz des verctorized Betriebes in Pandas besiegen. Kann jemand helfen?

Antwort

2

Verwenden verschachtelt np.where Anrufe:

import numpy as np 
df['GAP'] = np.where(df['PX_OPEN'] > df['PX_LAST'].shift(), 'up', 
      np.where(df['PX_OPEN'] < df['PX_LAST'].shift(), 'down', 'unch')) 
Verwandte Themen