In R, wenn Sie einen Spaltenindex basierend auf dem Namen der Spalte abrufen müssen, die Sie ausführen können
idx <- which(names(my_data)==my_colum_name)
Gibt es eine Möglichkeit, dasselbe mit Pandas-Datenrahmen zu tun?
Sicher können Sie verwenden .get_loc()
:
In [45]: df = DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})
In [46]: df.columns
Out[46]: Index([apple, orange, pear], dtype=object)
In [47]: df.columns.get_loc("pear")
Out[47]: 2
obwohl ich das ehrlich gesagt nicht oft selbst brauche. In der Regel Zugang namentlich das tut , was ich will es ( df["pear"]
, df[["apple", "orange"]]
, oder vielleicht df.columns.isin(["orange", "pear"])
), obwohl ich auf jeden Fall Fällen sehen kann , wo Sie die Indexnummer wollen würden.
.iloc
Operator verwenden, bei dem Sie nur Ganzzahlen für Zeilen und Spalten übergeben müssen.insert
nach einer vorhandenen Spalte eine neue Spalte erstellen möchte .Hier ist eine Lösung durch Listenverständnis. cols ist die Liste der Spalten, für die ein Index abgerufen werden soll:
quelle
cols
hat weniger Elemente alsdf.columns
,for c in cols if c in df
wäre das schneller.Die Lösung von DSM funktioniert, aber wenn Sie ein direktes Äquivalent zu
which
Ihnen möchten, können Sie dies tun(df.columns == name).nonzero()
quelle
Wenn Sie möglicherweise nach mehrspaltigen Übereinstimmungen suchen, kann eine vektorisierte Lösung mit der
searchsorted
Methode verwendet werden. Mitdf
als Datenrahmen undquery_cols
als zu suchenden Spaltennamen wäre eine Implementierung also -Probelauf -
quelle
Wenn Sie den Spaltennamen von der Spaltenposition (umgekehrt zur OP-Frage) möchten, können Sie Folgendes verwenden:
Verwenden von @DSM Beispiel:
Andere Möglichkeiten:
quelle
df.columns[location]
?Wie wäre es damit:
quelle