Katakanlah saya memiliki DataFrame berikut
Nomor Surat A 1 B 2 C 3 D 4
Yang bisa didapat melalui kode berikut
import pandas as pd
letters=pd.Series(('A', 'B', 'C', 'D'))
numbers=pd.Series((1, 2, 3, 4))
keys=('Letters', 'Numbers')
df=pd.concat((letters, numbers), axis=1, keys=keys)
Sekarang saya ingin mendapatkan nilai C dari kolom Letters.
Baris perintah
df[df.Letters=='C'].Letters
akan kembali
2 C Nama: Huruf, tipe: objek
Bagaimana saya bisa mendapatkan hanya nilai C dan bukan seluruh keluaran dua baris?
pd.DataFrame({'Letters': letters, 'Numbers': numbers})
Jawaban:
Ini mengembalikan elemen pertama dalam Indeks / Seri yang dikembalikan dari pilihan itu. Dalam hal ini, nilainya selalu merupakan elemen pertama.
EDIT:
Atau Anda dapat menjalankan loc () dan mengakses elemen pertama dengan cara itu. Ini lebih pendek dan cara saya menerapkannya di masa lalu.
sumber
FutureWarning: "item" has been deprecated and will be removed in a future version
df[df.Letters=='C'].Letters.iloc[0]
. Ini menghasilkan elemen pertama (yang juga unik) dalam rangkaian hasil.df[df.Letters=='C'].Letters.squeeze()
sebagai gantinya. Ini bekerja dengan cara yang sama. :)Gunakan
values
atribut untuk mengembalikan nilai sebagai larik np dan kemudian gunakan[0]
untuk mendapatkan nilai pertama:EDIT
Saya pribadi lebih suka mengakses kolom menggunakan operator subskrip:
Hal ini untuk menghindari masalah di mana nama kolom dapat memiliki spasi atau tanda hubung
-
yang berarti mengakses menggunakan.
.sumber
.
untuk mengakses kolom karena ini tidak akan selalu berfungsi misalnya jika nama kolom dimulai dengan nilai numerik atau ada karakter non alfa seperti spasi di nama kolom jadi saya selalu lebih sukadf['col_name']
df['col_name']
notasi, bukan.
notasi. Terima kasih lagi.edit:
sebenarnya, Anda hanya dapat mengindeks dataset seperti array lama lainnya.
sumber