Di R ketika Anda perlu mengambil indeks kolom berdasarkan nama kolom yang bisa Anda lakukan
idx <- which(names(my_data)==my_colum_name)
Apakah ada cara untuk melakukan hal yang sama dengan kerangka data panda?
Tentu, Anda bisa menggunakan .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
walaupun jujur saja saya tidak sering membutuhkan ini sendiri. Biasanya akses berdasarkan nama melakukan apa yang saya inginkan ( df["pear"]
,, df[["apple", "orange"]]
atau mungkin df.columns.isin(["orange", "pear"])
), meskipun saya pasti dapat melihat kasus di mana Anda ingin nomor indeks.
.iloc
operator, di mana Anda hanya harus melewati bilangan bulat untuk baris dan kolom.insert
kolom baru setelah kolom yang ada.Berikut adalah solusi melalui pemahaman daftar. cols adalah daftar kolom untuk mendapatkan indeks untuk:
sumber
cols
memiliki lebih sedikit elemen daripadadf.columns
, melakukanfor c in cols if c in df
akan lebih cepat.Solusi DSM berfungsi, tetapi jika Anda ingin yang setara langsung dengan yang dapat
which
Anda lakukan(df.columns == name).nonzero()
sumber
Ketika Anda mungkin mencari untuk menemukan beberapa kolom yang cocok, solusi vektor menggunakan
searchsorted
metode dapat digunakan. Dengan demikian, dengandf
sebagai kerangka data danquery_cols
sebagai nama kolom yang akan dicari, suatu implementasi akan -Contoh dijalankan -
sumber
Jika Anda ingin nama kolom dari lokasi kolom (sebaliknya ke pertanyaan OP), Anda dapat menggunakan:
Menggunakan Contoh @DSM:
Cara lain:
sumber
df.columns[location]
?bagaimana dengan ini:
sumber