„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie füge ich Listen ohne Fehler in Pandas DataFrame-Zellen ein?

Wie füge ich Listen ohne Fehler in Pandas DataFrame-Zellen ein?

Veröffentlicht am 06.11.2024
Durchsuche:815

How to Insert Lists into Pandas DataFrame Cells Without Errors?

Einfügen von Listen in Pandas-Zellen

Problem

In Python kann der Versuch, eine Liste in eine Zelle eines Pandas-DataFrames einzufügen, zu Fehlern führen oder unerwartete Ergebnisse. Wenn Sie beispielsweise versuchen, eine Liste in Zelle 1B eines DataFrame einzufügen, df:

df = pd.DataFrame({'A': [12, 23], 'B': [np.nan, np.nan]})
abc = ['foo', 'bar']

Die folgenden Versuche, die abc-Liste in 1B einzufügen, erzeugen jedoch Fehler oder falsche Einfügungen:

  1. df.ix[1 ,'B'] = abc – Fehler: Beim Festlegen mit einem iterierbaren
  2. df.ix[1,'B'] = [abc] müssen gleiche Len-Schlüssel und -Werte vorhanden sein – Fügt eine Liste mit einem Element ein: [['foo', 'bar']]
  3. df.ix[1,'B'] = ', '.join(abc) – Fügt eine Zeichenfolge ein: "foo, bar"
  4. df.ix[1,'B'] = [', '.join(abc)] – Fügt eine Liste mit einem Element ein: ['foo, bar']

Solution

Um Listen fehlerfrei in Zellen eines DataFrame einzufügen, verwenden Sie die at-Methode, die sich immer auf einen einzelnen Wert bezieht:

df.at[1, 'B'] = ['foo', 'bar']

Dadurch wird die ABC-Liste wie erwartet in 1B eingefügt:

    A  B
0  12  NaN
1  23  ['foo', 'bar']

Beachten Sie, dass die DataFrame-Spalte dtype=object haben muss, um das Einfügen in die Liste zu ermöglichen. Zum Beispiel:

df['B'] = df['B'].astype('object')
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3