python pandas veri çerçevesi sütunları dikte anahtarına ve değerine dönüştürülür


92

Birden çok sütunu olan bir pandalar veri çerçevem ​​var ve iki sütundan bir dikt oluşturmak istiyorum: biri diktenin anahtarları, diğeri diktenin değerleri. Bunu nasıl yapabilirim?

Veri çerçevesi:

           area  count
co tp
DE Lake      10      7
Forest       20      5
FR Lake      30      2
Forest       40      3

Alanı anahtar olarak tanımlamalıyım, diktede değer olarak saymalıyım. Şimdiden teşekkür ederim.

Yanıtlar:


213

Seninse lakes, DataFramegibi bir şey yapabilirsin

area_dict = dict(zip(lakes.area, lakes.count))

1
0.17.1 sürümünde hata al:TypeError: zip argument #2 must support iteration
jezrael

19
Çözüm:area_dict = dict(zip(lakes['area'], lakes['count']))
jezrael

1
Bu soruya verilen diğer cevaplar stackoverflow.com/questions/18695605/…
Ben Fulton

1
Sözlük değerlerinde birden fazla sütunun olmasını istiyorsanız ne olur? Gibi bir şey düşünüyorum area_dict = dict(zip(lakes.area, (lakes.count, lakes.other_column))). Bunun olmasını nasıl sağlarsın?
Jesse Marks

2
İkinci bağımsız değişkenin birden çok değeri varsa, bu işe yaramaz.
pnv

9

Pandalarla şu şekilde yapılabilir:

Göller sizin DataFrame'iniz ise:

area_dict = lakes.to_dict('records')

1
verilen örnekte "kayıtlar" sütunu yoktur. Ayrıca böyle bir durumda dizin anahtar olacaktır, bizim istediğimiz şey bu değil.
Michael D

11
@MichaelD 'kayıtları' bir sütun değil. Tartışma için bir seçenek orient.
Zheng Liu

2

Pandalarla oynamak istiyorsanız bunu da yapabilirsiniz. Ancak, punchagan'ın tarzını seviyorum.

# replicating your dataframe
lake = pd.DataFrame({'co tp': ['DE Lake', 'Forest', 'FR Lake', 'Forest'], 
                 'area': [10, 20, 30, 40], 
                 'count': [7, 5, 2, 3]})
lake.set_index('co tp', inplace=True)

# to get key value using pandas
area_dict = lake.set_index('area').T.to_dict('records')[0]
print(area_dict)

output: {10: 7, 20: 5, 30: 2, 40: 3}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.