2017-08-27 3 views
1

Ich habe meine Pandas Daten, wo ich den Zustand Zeile weise überprüfen und Wert der ith und (i + 1) th Reihe zuweisen möchte, was könnte sei der einfachste Weg, es zu tun.Bedingung auf die gleiche Zeile und Zeile daneben in Pandas Datenrahmen anwenden

x=pd.DataFrame(np.random.rand(10)) 

Ich habe wie dies versucht:

status=np.where(x<0.5,'Y','N') 

Ich mag jede der Zeilen überprüfen, ob der Wert kleiner als 0,5 ist, und weise ‚Y‘, aber wenn es wird ‚Y zugewiesen In der ersten Zeile sollte die Zeile "Y" auch "N" heißen.

Ergebnis sollte wie folgt aussehen

0 0.652753 N 
1 0.756219 N 
2 0.299177 Y 
3 0.851635 *Y* 
4 0.942549 N 
5 0.686693 N 
6 0.071128 Y 
7 0.482733 Y 
8 0.979321 *Y* 
9 0.830639 N 
+1

Sollte nicht der Ausgang für den Index 8 auch durch Y? –

+1

Was ist mit Reihe 8? Warum ist das nicht auch ein Ja? Zeile 7 ist Ja. –

+0

@ScottBoston Wenn OP bestätigt, wird dies mit 'df.shift' sehr einfach. Ist das die erste Antwort, die mir in den Sinn kam? : p –

Antwort

3
df.assign(status=np.where((x<0.5) | (x.shift(1)<0.5),'Y','N')) 

Ausgang:

  status 
0 0.652753  N 
1 0.756219  N 
2 0.299177  Y 
3 0.851635  Y 
4 0.942549  N 
5 0.686693  N 
6 0.071128  Y 
7 0.482733  Y 
8 0.979321  Y 
9 0.830639  N 
+0

Hier gehts ~ :) – Wen

Verwandte Themen