Ich versuche, eine neue Zeile zu einem Pandas-Datenrahmen dynamisch hinzuzufügen. Der Index ist ein Zeitstempel und ich kann nicht herausfinden, wie man eine neue Zeile einfügt, ohne den Index durcheinander zu bringen. Der erste Teil des Codes erzeugt den Datenrahmen:Hinzufügen von Zeile zu Dataframe mit Zeitstempelindex
data = {'time_stamp': ['2014-05-01 18:47:05.069', '2014-05-01 18:47:05.119', '2014-05-02 18:47:05.230',],
'col_a': [34, 25, 26],
'col_b' : [21,32,43]}
df = pd.DataFrame(data, columns = ['time_stamp', 'col_a', 'col_b'])
df['time_stamp'] = pd.to_datetime(df['time_stamp'], format="%Y-%m-%d %H:%M:%S.%f")
df.index = df['time_stamp'] # Make time_stamp the index
del df['time_stamp'] # Drop the initial time_stamp column
print df
Ergebnis:
col_a col_b
time_stamp
2014-05-01 18:47:05.069 34 21
2014-05-01 18:47:05.119 25 32
2014-05-02 18:47:05.230 26 43
Der Versuch, eine Reihe mit concat (gleiche Problem mit append) hinzuzufügen:
#Insert new row (corresponding to an incoming update message with a time stamp an a new value on col_a
ts = pd.to_datetime("2014-05-04 18:47:05.487", format="%Y-%m-%d %H:%M:%S.%f")
new_row = pd.DataFrame([[11]], columns = ["col_a"])
df = pd.concat([df, pd.DataFrame(new_row)], ignore_index=False)
print df
Ergebnis:
col_a col_b
2014-05-01 18:47:05.069000 34 21.0
2014-05-01 18:47:05.119000 25 32.0
2014-05-02 18:47:05.230000 26 43.0
0 11 NaN
Wenn ich erweitern "new_row "Mit einer Spalte namens" time_frame "und einem entsprechenden Zeitstempel wird eine neue Spalte namens" time_stamp "erstellt, anstatt einen neuen Wert in die Indexspalte einzufügen.
col_a col_b time_stamp
2014-05-01 18:47:05.069000 34 21.0 NaT
2014-05-01 18:47:05.119000 25 32.0 NaT
2014-05-02 18:47:05.230000 26 43.0 NaT
0 11 NaN 2014-05-04 18:47:05.487
Alle Ideen würden sehr geschätzt werden.
Schöne - vielen Dank! Ich habe versucht "index = ts", aber offensichtlich nicht sorgfältig genug gelesen, um zu sehen, dass der Index als Liste bestanden werden sollte: [ts] – Pman70
@ Pman70 Ja. Wenn diese Antwort Ihnen helfen würde, würden Sie [akzeptieren] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes#tab-top) etwas dagegen haben. Ich würde es begrüßen! Glückliche Kodierung! –
Akzeptiert! Ich bin ein kompletter Neuling in diesem Forum, also bin ich nicht in der üblichen Praxis. Ich schätze besonders, dass Sie die Lösung direkt in mein Beispiel eingefügt haben. – Pman70