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?

13voto

RockStar Punkte 1294

Sie können ein Generator-Objekt verwenden, um ein Dataframe zu erstellen, das über der Liste speichereffizienter ist.

num = 10

# Generator-Funktion, um Generator-Objekt zu erstellen
def numgen_func(num):
    for i in range(num):
        yield ('name_{}'.format(i), (i*i), (i*i*i))

# Generator-Ausdruck, um Generator-Objekt zu erstellen (Daten werden nur einmal erstellt und können nicht wiederverwendet werden)
numgen_expression = (('name_{}'.format(i), (i*i), (i*i*i)) for i in range(num) )

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

Um Rohdaten zu einem bestehenden Dataframe hinzuzufügen, können Sie die append-Methode verwenden.

df = df.append([{ 'lib': "name_20", 'qty1': 20, 'qty2': 400  }])

9voto

Jack Daniel Punkte 2448

Erstellen Sie einen neuen Datensatz (Datenrahmen) und fügen Sie ihn zum alten Datenrahmen hinzu.

Übergeben Sie eine Liste von Werten und den entsprechenden Spaltennamen, um einen neuen Datensatz zu erstellen (Datenrahmen):

new_record = pd.DataFrame([[0, 'abcd', 0, 1, 123]], columns=['a', 'b', 'c', 'd', 'e'])

old_data_frame = pd.concat([old_data_frame, new_record])

7voto

shivampip Punkte 1636

Hier ist der Weg, um eine Zeile in einem Pandas DataFrame hinzuzufügen/anfügen:

def add_row(df, row):
    df.loc[-1] = row
    df.index = df.index + 1
    return df.sort_index()

add_row(df, [1,2,3])

Es kann verwendet werden, um eine Zeile in einem leeren oder gefüllten Pandas DataFrame einzufügen/anfügen.

4voto

Shahir Ansari Punkte 1466

Wenn Sie eine Zeile am Ende hinzufügen möchten, fügen Sie sie als Liste an:

valuestoappend = [va1, val2, val3]
res = res.append(pd.Series(valuestoappend, index = ['lib', 'qty1', 'qty2']), ignore_index = True)

4voto

Giorgos Myrianthous Punkte 29317

Alles, was Sie brauchen, ist loc[df.shape[0]] oder loc[len(df)]


# Unter der Annahme, dass Ihr df 4 Spalten hat (str, int, str, bool)
df.loc[df.shape[0]] = ['col1Value', 100, 'col3Value', False] 

oder

df.loc[len(df)] = ['col1Value', 100, 'col3Value', False]

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