Ich versuche, dem DataFrame eine neue Zeile mit einem bestimmten Indexnamen 'e'
hinzuzufügen.
number variable values
a NaN bank true
b 3.0 shop false
c 0.5 market true
d NaN government true
Ich habe folgendes versucht, aber es wird eine neue Spalte anstatt einer neuen Zeile erstellt.
new_row = [1.0, 'hotel', 'true']
df = df.append(new_row)
Immer noch nicht verstehen, wie die Zeile mit einem bestimmten Index eingefügt wird. Bin für Vorschläge dankbar.
Sie können df.loc[_not_yet_existing_index_label_] = new_row
verwenden.
Demo:
In [3]: df.loc['e'] = [1.0, 'hotel', 'true']
In [4]: df
Out[4]:
number variable values
a NaN bank True
b 3.0 shop False
c 0.5 market True
d NaN government True
e 1.0 hotel true
Mit dieser Methode können Sie keine Zeile mit bereits vorhandenem (doppeltem) Indexwert (Label) hinzufügen. Eine Zeile mit diesem Index-Label wird in diesem Fall updaten .
UPDATE:
Dies funktioniert möglicherweise nicht in der letzten Version von Pandas/Python3, wenn der Index eine .__ ist. DateTimeIndex und der Index der neuen Zeile ist nicht vorhanden.
es wird funktionieren, wenn wir korrekte Indexwerte angeben.
Demo (mit pandas: 0.23.4
):
In [17]: ix = pd.date_range('2018-11-10 00:00:00', periods=4, freq='30min')
In [18]: df = pd.DataFrame(np.random.randint(100, size=(4,3)), columns=list('abc'), index=ix)
In [19]: df
Out[19]:
a b c
2018-11-10 00:00:00 77 64 90
2018-11-10 00:30:00 9 39 26
2018-11-10 01:00:00 63 93 72
2018-11-10 01:30:00 59 75 37
In [20]: df.loc[pd.to_datetime('2018-11-10 02:00:00')] = [100,100,100]
In [21]: df
Out[21]:
a b c
2018-11-10 00:00:00 77 64 90
2018-11-10 00:30:00 9 39 26
2018-11-10 01:00:00 63 93 72
2018-11-10 01:30:00 59 75 37
2018-11-10 02:00:00 100 100 100
In [22]: df.index
Out[22]: DatetimeIndex(['2018-11-10 00:00:00', '2018-11-10 00:30:00', '2018-11-10 01:00:00', '2018-11-10 01:30:00', '2018-11-10 02:00:00'], dtype='da
tetime64[ns]', freq=None)
Verwenden Sie "Anhängen", indem Sie einen Datenrahmen in eine Liste umwandeln, falls Sie mehrere Zeilen gleichzeitig hinzufügen möchten
df = df.append(pd.DataFrame([new_row],index=['e'],columns=df.columns))
Oder für eine Zeile (Danke @Zero)
df = df.append(pd.Series(new_row, index=df.columns), name='e') #EDIT: there was a missing ')'
Ausgabe:
Anzahl variabler Werte a NaN Bank True b 3.0 shop False c 0.5 Markt True d NaN-Regierung.
Wenn es die erste Reihe ist, brauchen Sie:
df = Dataframe(columns=[number, variable, values])
df.loc['e', [number, variable, values]] = [1.0, 'hotel', 'true']