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:
mydict = dict(zip(zip(df['A'],df['B']), df['C']))
Menggunakan pandas to_dict () juga berfungsi:
mydict = df.set_index(['A','B']).to_dict(orient='dict')['C']
(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:
- bagi mereka yang membutuhkan solusi semacam ini
- jika seseorang mengetahui solusi eksekusi yang lebih cepat (misalnya, untuk jutaan baris), saya akan menghargai balasannya.