1412 Stimmen

Erstellen Sie ein Pandas-Datenframe, indem Sie Zeile für Zeile hinzufügen

Wie erstelle ich ein leeres DataFrame und füge dann Zeilen einzeln hinzu?

Ich habe ein leeres DataFrame erstellt:

df = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))

Dann kann ich eine neue Zeile am Ende hinzufügen und ein einzelnes Feld ausfüllen mit:

df = df._set_value(index=len(df), col='qty1', value=10.0)

Das funktioniert nur für ein Feld auf einmal. Gibt es einen besseren Weg, um eine neue Zeile zum df hinzuzufügen?

3voto

qed Punkte 20934

Ein weiterer Weg, es zu tun (wahrscheinlich nicht sehr performant):

# Füge eine Zeile hinzu
def add_row(df, row):
    colnames = list(df.columns)
    ncol = len(colnames)
    assert ncol == len(row), "Die Länge der Zeile muss mit der Breite des DataFrame übereinstimmen: %s" % row
    return df.append(pd.DataFrame([row], columns=colnames))

Sie können die DataFrame-Klasse auch so erweitern:

import pandas as pd
def add_row(self, row):
    self.loc[len(self.index)] = row
pd.DataFrame.add_row = add_row

3voto

hansrajswapnil Punkte 493

Sie können zwei DataFrames dafür konkatenieren. Ich bin im Grunde auf dieses Problem gestoßen, um eine neue Zeile zu einem vorhandenen DataFrame mit einem Zeichenindex (nicht numerisch) hinzuzufügen.

Also gebe ich die Daten für eine neue Zeile in einem dct() und den Index in einer Liste ein.

new_dict = {Geben Sie hier die Eingabe für die neue Zeile ein}
new_list = [Geben Sie hier Ihren Index ein]

new_df = pd.DataFrame(data=new_dict, index=new_list)

df = pd.concat([existing_df, new_df])

3voto

Harshal Deore Punkte 631
initial_data = {'lib': np.array([1,2,3,4]), 'qty1': [1,2,3,4], 'qty2': [1,2,3,4]}

df = pd.DataFrame(initial_data)

df

lib    qty1    qty2
0    1    1    1
1    2    2    2
2    3    3    3
3    4    4    4

val_1 = [10]
val_2 = [14]
val_3 = [20]

df.append(pd.DataFrame({'lib': val_1, 'qty1': val_2, 'qty2': val_3}))

lib    qty1    qty2
0    1    1    1
1    2    2    2
2    3    3    3
3    4    4    4
0    10    14    20

Sie können eine for-Schleife verwenden, um durch Werte zu iterieren oder Arrays von Werten hinzufügen.

val_1 = [10, 11, 12, 13]
val_2 = [14, 15, 16, 17]
val_3 = [20, 21, 22, 43]

df.append(pd.DataFrame({'lib': val_1, 'qty1': val_2, 'qty2': val_3}))

lib    qty1    qty2
0    1    1    1
1    2    2    2
2    3    3    3
3    4    4    4
0    10    14    20
1    11    15    21
2    12    16    22
3    13    17    43

1voto

Vineet Jain Punkte 1466

Machen Sie es einfach. Indem Sie eine Liste als Eingabe nehmen, die als Zeile im Datenrahmen angefügt wird:

import pandas as pd
res = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))
for i in range(5):
    res_list = list(map(int, input().split()))
    res = res.append(pd.Series(res_list, index=['lib', 'qty1', 'qty2']), ignore_index=True)

0voto

srikanth Gattu Punkte 25

Vor dem Hinzufügen einer Zeile müssen wir das DataFrame in ein Wörterbuch umwandeln. Dort können Sie die Schlüssel als Spalten im DataFrame sehen und die Werte der Spalten sind wieder im Wörterbuch gespeichert, aber dort ist der Schlüssel für jede Spalte die Indexnummer im DataFrame.

Diese Idee bringt mich dazu, den folgenden Code zu schreiben.

df2 = df.to_dict()
values = ["s_101", "hyderabad", 10, 20, 16, 13, 15, 12, 12, 13, 25, 26, 25, 27, "gut", "schlecht"] # Dies ist die Gesamtzeile, die wir hinzufügen werden
i = 0
for x in df.columns:   # Hier gibt uns df.columns den Hauptwörterbuchschlüssel
    df2[x][101] = values[i]   # Hier ist die 101 unsere Indexnummer. Es ist auch der Schlüssel des Unterwörterbuchs
    i += 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X