Python Pandas: Auflösen "List-Objekt hat kein Attribut 'Loc'"
Ich Importiere eine CSV als DataFrame mit:
import numpy as np
import pandas as pd
df = pd.read_csv("test.csv")
Dann bin ich versucht zu tun, ein einfaches ersetzen der IDs:
df.loc[df.ID == 103, ['fname', 'lname']] = 'Michael', 'Johnson'
Bekomme ich die folgende Fehlermeldung:
AttributeError: 'list' object has no attribute 'loc'
Beachten, wenn ich print pd.version()
bekomme ich 0.12.0, also ist es kein problem (zumindest soweit ich das verstanden habe) mit vor-11-version. Irgendwelche Ideen?
- Diese syntax funktioniert gut für mich - wenn du uns ein reproduzierbares Beispiel, dann wäre es einfacher zu helfen, da es möglicherweise abhängen, die ein Problem mit den Daten in der csv-Datei.
- Ja, funktioniert auch für mich, eine Probe Ihrer csv kann hilfreich sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pickup aus dem Kommentar: "ich war, dies zu tun:"
Was Sie dort erschaffen, ist eine "Maske": ein array mit Boolean, der sagt, die Bestandteil des index erfüllt Ihren Zustand.
Zur Filterung des dataframe auf Ihren Zustand Sie dies tun möchten:
Etwas expliziter wird dies:
Wenn Sie möchten, um die gesamte dataframe und nur ersetzen möchten, die bestimmte Werte, es gibt Methoden wie replace: Python pandas gleichwertig ersetzen. Auch andere (Leistung Weise große) Methode wäre die Schaffung einer separaten DataFrame mit der from/to-Werte als Säule und mit pd.merge, kombinieren Sie es in der bestehenden DataFrame. Und mit der index-set-Werte ist ebenfalls möglich:
Aber für eine größere Gruppe von ersetzt würden Sie wollen, um eine der beiden anderen Methoden, oder verwenden Sie "gelten" mit einer lambda-Funktion (für Wert-Transformationen). Last but not least: Sie nutzen können .fillna('bla'), um schnell füllen sich die NA-Werte.
Den traceback zeigt Sie, dass df ist ein
list
und nicht einDataFrame
wie erwartet in deiner code-Zeile.Es bedeutet, dass zwischen
df = pd.read_csv("test.csv")
unddf.loc[df.ID == 103, ['fname', 'lname']] = 'Michael', 'Johnson'
Sie andere Linien des codes, weist ein list-Objekt zudf
. Überprüfen, dass Stück code zu finden, der Ihre Fehlerdf = [df.hc== 2]
, und ich denke, das ist die Umwandlung in eine Liste? Wie kann ich DataFramify es?@Boud Antwort richtig ist. Loc Zuordnung funktioniert gut, wenn die Rechte Seite mit der Liste entspricht der Anzahl der Elemente einbauen