2017-01-30 5 views
0

Auf Sparse-Matrix auf Pandas-Datenrahmen, ich möchte Werte aktualisieren, wobei Werte 1 sind, indem Sie eine Zeile verschieben.Aktualisieren von Werten durch Verschieben von 1 Zeile in Pandas

from 
    0 1 2 
0 0 1 1 
1 1 1 0 
2 0 0 0 
3 0 0 1 
4 0 0 0 
5 1 1 0 

to 
    0 1 2 
0 0 1 1 
1 1 1 1 
2 1 1 0 
3 0 0 1 
4 0 0 1 
5 1 1 0 

Ich verstehe, dass die Werte in einem bestimmten Ort zu aktualisieren durch table[table==1] = 1 gegeben

Ich will nicht für Satz verwenden, da es große Anzahl von Datensätzen hat.

+1

Ihr Beispiel widerspricht Ihre Beschreibung: Sie scheinen 0en zu aktualisieren, nicht mehr als 1 ist. Außerdem macht 'table [table == 1] = 1' genau das gleiche. – DyZ

+0

Ja, Tabelle [Tabelle == 1] = 1 ist im Grunde nichts, nur 1 zu 1 am selben Ort zu ersetzen. Ich fragte mich, ob es 1 in die nächste Zeile verschieben kann. Andere Nullen sind geschützt. – Lcy

Antwort

0

Ich denke, das sollte funktionieren:

newdf = df.shift().fillna(0).astype(int) | df 
# 0 1 2 
#0 0 1 1 
#1 1 1 1 
#2 1 1 0 
#3 0 0 1 
#4 0 0 1 
#5 1 1 0 
+0

Diese Antwort ist nicht korrekt IMO wie in seinem Beispiel hat er 0 durch 1 ersetzt, wenn das Element in der vorherigen Zeile die gleiche Indexposition ist 1 – satnam

+0

@satnam Das ist genau das, was meine vorgeschlagene Lösung tut. – DyZ

+0

Ich möchte 0 zu 1 ersetzen, wenn vorherige Zeile hat 1. – Lcy

Verwandte Themen