Ich habe ein paar Antworten auf "Einfügen einer Zeile in einem Pandas-Datenframe" gesehen, aber sie gehen normalerweise von einer einzelnen Zeileneinfügung aus oder sind ansonsten etwas anders als das, wonach ich suche.Pandas: Einfügen von Zeilen ohne Schleife
Ich bin auf der Suche nach einer Zeile aus einem anderen Datenrahmen mehrmals in df
einfügen, basierend auf einer Bedingung.
Der folgende Code "funktioniert" in dem es gibt mir, was ich suche, aber ich frage mich, ob dies ohne eine for
Schleife durchgeführt werden kann.
df = pd.DataFrame({
'a':[1,2,3,2,3,1,1,2,1,2,3,3,1,3],
'b':[0,0,0,0,0,0,0,0,0,0,0,0,0,0]
})
df2 = pd.DataFrame(columns = df.columns)
row_fill = pd.DataFrame({'a':[100],'b':[200]})
for i in df.index:
if df['a'][i] == 2:
df2 = df2.append(row_fill)
df2 = df2.append(df.loc[i])
df2.reset_index(inplace = True, drop = True)
df = df2
Jede Hilfe wird geschätzt.
Dank @MaxU - ich bin gerade durch dieses Recht zu denken. Ich bin mit Numpy nicht vertraut. Aber offensichtlich funktioniert es! – pshep123
@ pshep123, Sie sind willkommen :) Wenn Sie nicht möchten, Numpy, können wir verwenden: 'idx = df.index [df.a == 2]' statt – MaxU
Das ist großartig, noch einmal @MaxU. Ich habe die letzte '.concat()' Funktion abgebrochen, nur um zu sehen, was vor sich geht. Liegt es daran, dass das 'df' in dem' .concat() 'zuerst ist, dass es vor' new' geht, obwohl sie denselben Index haben? – pshep123