Ich möchte meine Daten in einem Pandas Datenrahmen ändern.Änderung der Spaltenwerte nach Timedelta und Index
Die Daten, die ich sammle, müssen einen Schrittwert zugewiesen bekommen. Die Bedingungen, die einen Stufenwechsel auslösen, sind gelegentlich Zeit- oder Hochdruck- oder Temperaturwerte. Ich komme nicht über den ersten Schritt hinaus: Wenn die Reihe über einen bestimmten Druck (1100 psi) und unter einer Temperatur (40 C) steht, ist dies die "Verdünnungsphase".
Bei dem Versuch, den Wert zu ändern:
df.ix[(df['press'] > 1100) & (df['temp'] < 40),'proc'] = 'dilute';
Ich scheine nur die oberen zwei Reihen zu ändern.
items[0].head()
Out[37]:
time mass temp press proc
time
00:00:00 10:58:07 21.947102 23.306101 1.830506 dilute
00:00:01 10:58:08 22.076259 23.306101 57.274142 dilute
00:00:02 10:58:09 22.094710 23.306101 196.000203 pressurize
00:00:03 10:58:10 22.113161 23.306101 293.318991 pressurize
00:00:03 10:58:10 22.094710 23.306101 361.161415 pressurize
items[0].tail()
Out[38]:
time mass temp press proc
time
00:36:12 11:34:19 18.201538 39.798763 -1.678585 pressurize
00:36:13 11:34:20 18.183087 39.719165 -1.444645 pressurize
00:36:14 11:34:21 18.183087 39.671407 -1.444645 pressurize
00:36:15 11:34:22 18.219989 39.703246 -1.444645 pressurize
00:36:16 11:34:23 18.201538 39.758964 -1.444645 pressurize
Bei einer weiteren Untersuchung, die Indizierung zu funktionieren scheint, mir den Index geben, wo ich erwarten würde die Verdünnung sehen auftritt ...
print(df.ix[(df['press'] > 1100) & (df['temp'] < 40),'proc'].head(),
df.ix[(df['press'] > 1100) & (df['temp'] < 40),'proc'].tail())
time
00:00:26 pressurize
00:00:27 pressurize
00:00:28 pressurize
00:00:29 pressurize
00:00:30 pressurize
Name: proc, dtype: object time
00:26:08 pressurize
00:26:09 pressurize
00:26:10 pressurize
00:26:11 pressurize
00:26:12 pressurize
Name: proc, dtype: object
jedoch, wenn es um meine Daten anzuwenden, ich bekomme nur die ersten beiden Werte geändert, und die message--
FutureWarning: in Zukunft wird boolean-Array-likes als ein boolean-Array-Index-Werte [Indexer] = value‘behandelt werden
Das Ausführen der cookbook examples gibt die erwartete Antwort.
Es scheint, dass ich einen verschachtelten Index habe, aber ich bin nicht klar, warum, oder wie man dies ändern soll. Hier gibt es ein paar Ebenen, und die Suche nach Lösungen hat sich nicht als nützlich erwiesen oder lieferte den besten Weg zur Klärung.
Ich dachte, um den Index zurückzusetzen, und gehen Sie mit Zahlen, aber ich muss Schritte nach Werten und Zeitdelta sortieren.
Der Index ist ein Timedelta, das ich benötigte, um eine Anzahl von Läufen zu normalisieren, die über eine Anzahl von Perioden gestartet wurden, um alle Läufe zur gleichen Zeit 0 Sekunden zu starten. Meine Suchen ergeben nur das Datum Munging und nicht die Zeit, daher meine Normalisierungswerte auf Null mit einem Timedelta-Index.
Wenn es eine bessere Möglichkeit gibt, diese Frage oder mehr Klarheit zu veröffentlichen, fragen Sie bitte. Ich bin mehr als bereit, Klarheit oder Ordnung hinzuzufügen. Es ist schwer vorherzusagen, wie die hilfreiche Information für einen professionellen Programmierer aussehen würde.
ich die Spalte auf die Timedelta und „normalisiert“ geändert basierend auf dem minimalen Wert der Zeit. Das hat den Index mit der Zeit verglichen, also ist das vielleicht das Problem. – double0darbo
Es gibt über 2000 Datenpunkte. Seien Sie versichert, dass es tut, und beachten Sie, wie die ersten zwei Zeilen verdünnen zeigen. Irgendwelche Gedanken dazu? Ich werde in das Umbenennen der Zeitspalte schauen und sehen, ob das den Trick macht – double0darbo
Sie tun nicht, und das war, was so frustrierend war. Der Index ist zwei Spalten, eine Zeit und der Proc, also dachte ich, es hatte etwas damit zu tun, einen n-Wert von zwei – double0darbo