2017-06-26 3 views
2

Ich bin neu in Python und Pandas. Ich versuche eine Funktion zu schreiben, um eine eindeutige Liste meiner Spaltenwerte zu erhalten. Meine Funktion sieht folgendermaßen aus: "Ortsname" ist das Attribut, für das ich eindeutige Werte erhalten möchte. 'placename' sollte als Zeichenfolgenargument übergeben werden, das dem Header der csv-Datei entspricht.Attribut Fehler, wenn eindeutige Spalte immer Werte

def get_city_list(state, type, placename): 

    city_dir = os.path.join(baseDir, type + ".csv") 
    city_df = pd.read_csv(city_dir, quotechar = '"', skipinitialspace = True, sep = ",") 

    state_df = city_df.loc[city_df["state"] == state] 

    city_list = state_df.placename.unique() 

    return city_list 

Allerdings, wenn ich diese Funktion aufrufen, wirft es ein Attribut Fehlermeldung, ‚Datenrahmen‘ Objekt hat kein Attribut „Ortsname“. Es scheint, dass „Ortsname“ soll nicht eine Zeichenfolge sein, und wenn ich es als
CITY_LIST = state_df.cityname.unique() ersetzen, es funktioniert, wo Städtename (ohne "„) die aktuelle Überschrift der Spalte im Original ist CSV-Datei. Da ich meine Funktion vielseitig machen wollen, möchte ich einen Weg finden, mit diesem Fall zu tun, damit ich nicht haben, um manuell den Inhalt von „Ortsname“ jeder Zeit zu ändern.

Ihre Hilfe wird sehr geschätzt!

Dank

+0

‚Städtename‘, ‚Jahr‘, ‚Staat‘ unter piRSquared hat mein Problem zwar gelöst, Dank! – macintosh81

Antwort

1

Der Punktoperator . ist reserviert Attribute eines Objekts zuzugreifen. pandas ist nett genug, um Spaltennamen über ein Attribut zugänglich zu machen. Aber man kann nicht etwas tun, wie df."myplace"

, um Ihren Code zu ändern:

state_df[placename].unique() 

Auf diese Weise Sie vorbei placename auf das getitem Verfahren.

+0

Wow, es funktioniert wie Magie! Danke für die schnelle Antwort! – macintosh81

+1

@ macintosh81 ... wenn diese Antwort Ihnen geholfen, sollten Sie [akzeptieren.] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes# tab-top) –

Verwandte Themen