Saya memiliki dataframe dua kolom, dan bermaksud untuk mengubahnya menjadi kamus python - kolom pertama akan menjadi kuncinya dan yang kedua akan menjadi nilainya. Terima kasih sebelumnya.
Dataframe:
id value
0 0 10.2
1 1 5.7
2 2 7.4
python
dictionary
pandas
perigee
sumber
sumber
Jawaban:
Lihat dokumen untuk
to_dict
. Anda bisa menggunakannya seperti ini:Dan jika Anda hanya memiliki satu kolom, untuk menghindari nama kolom juga merupakan tingkat di dict (sebenarnya, dalam hal ini Anda menggunakan
Series.to_dict()
):sumber
>>> ptest = p.DataFrame([['a',1],['a',2],['b',3]], columns=['id', 'value']) >>> ptest.set_index('id')['value'].to_dict()
sumber
Jika Anda menginginkan cara sederhana untuk mempertahankan duplikat, Anda dapat menggunakan
groupby
:sumber
Jawaban joris di utas ini dan jawaban punchagan di utas duplikat sangat elegan, namun tidak akan memberikan hasil yang benar jika kolom yang digunakan untuk kunci berisi nilai duplikat.
Sebagai contoh:
Jika Anda memiliki entri duplikat dan tidak ingin kehilangannya, Anda dapat menggunakan kode jelek tapi berfungsi ini:
sumber
mydict = defaultdict(list)\n for (key, val) in ptest[["id", "value"]].itertuples(index=False):\n mydict[key].append(val)
Solusi paling sederhana:
Contoh:
Jika Anda memiliki beberapa nilai, seperti val1, val2, val3, dll dan Anda menginginkannya sebagai daftar, gunakan kode di bawah ini:
sumber
records
maksudnya disini?records
sini maksud‘records’ : list like [{column -> value}, … , {column -> value}]
Lihat pandas.pydata.org/pandas-docs/stable/reference/api/…di beberapa versi, kode di bawah ini mungkin tidak berfungsi
jadi buatlah itu eksplisit
Perhatikan saya menggunakan id_ karena kata id adalah kata yang dipesan
sumber
Anda bisa menggunakan 'dikt pemahaman'
sumber
Solusi lain (sedikit lebih pendek) untuk tidak kehilangan entri duplikat:
sumber
Anda membutuhkan daftar sebagai nilai kamus. Kode ini akan melakukan triknya.
sumber
Saya menemukan pertanyaan ini saat mencoba membuat kamus dari tiga kolom kerangka data panda. Dalam kasus saya kerangka data memiliki kolom A, B dan C (katakanlah A dan B adalah koordinat geografis dari bujur dan lintang dan C wilayah negara / negara bagian / dll, yang kurang lebih demikian).
Saya ingin kamus dengan setiap pasangan nilai A, B (kunci kamus) cocok dengan nilai C (nilai kamus) di baris yang sesuai (setiap pasangan nilai A, B dijamin unik karena pemfilteran sebelumnya, tetapi ini adalah mungkin memiliki nilai C yang sama untuk pasangan nilai A, B yang berbeda dalam konteks ini), jadi saya lakukan:
Menggunakan pandas to_dict () juga berfungsi:
(tidak ada kolom A atau B yang digunakan sebagai indeks sebelum menjalankan baris yang membuat kamus)
Kedua pendekatan tersebut cepat (kurang dari satu detik pada kerangka data dengan 85 ribu baris, laptop dual-core cepat berusia 5 tahun).
Alasan saya memposting ini:
sumber
ini sloution saya, loop dasar
sumber
Ini solusi saya:
sumber