अजगर पंडों डेटाफ्रेम स्तंभों को प्रमुख कुंजी और मूल्य में परिवर्तित करते हैं


98

मेरे पास कई स्तंभों के साथ एक पांडा डेटा फ्रेम है और मैं दो स्तंभों से एक तानाशाही का निर्माण करना चाहूंगा: एक तानाशाह की कुंजी के रूप में और दूसरा तानाशाह के मूल्यों के रूप में। मैं उसे कैसे कर सकता हूँ?

डेटा ढांचा:

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

मुझे क्षेत्र को कुंजी के रूप में परिभाषित करने की आवश्यकता है, तानाशाही में मूल्य की गणना करें पहले ही, आपका बहुत धन्यवाद।

जवाबों:


229

अगर lakesआपका है DataFrame, तो आप कुछ ऐसा कर सकते हैं

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

1
संस्करण में 0.17.1 त्रुटि मिलती है:TypeError: zip argument #2 must support iteration
jezrael

23
समाधान:area_dict = dict(zip(lakes['area'], lakes['count']))
jezrael

1
इस सवाल पर अन्य जवाब stackoverflow.com/questions/18695605/…
बेन फुल्टन

1
क्या होगा यदि आप शब्दकोश मूल्यों में एक से अधिक कॉलम चाहते हैं? मैं कुछ ऐसा सोच रहा हूं area_dict = dict(zip(lakes.area, (lakes.count, lakes.other_column)))। आप इसे कैसे करेंगे?
जेसी मार्क्स ने

2
यदि दूसरे तर्क में कई मान हैं, तो यह काम नहीं करेगा।
pnv

10

पांडा के साथ यह किया जा सकता है:

यदि झीलों अपने DataFrame है:

area_dict = lakes.to_dict('records')

1
दिए गए उदाहरण में कोई 'रिकॉर्ड' कॉलम नहीं है। इसके अलावा ऐसे मामले में सूचकांक प्रमुख होगा, जो हम नहीं चाहते हैं।
माइकल डी

11
@ मिचेल्ड 'रिकॉर्ड' एक कॉलम नहीं है। यह तर्क का एक विकल्प है orient
झेंग लियू

यह वास्तव में निम्नलिखित प्रारूप में शब्दकोशों की एक सूची का उत्पादन करेगा: [{'क्षेत्र': 10, 'गिनती': 7}, {'क्षेत्र': 20, 'गिनती': 5} ...] एक कुंजी के बजाय- > मूल्य तानाशाही।
रोई बहूमी 12

2

यदि आप पंडों के साथ खेलना चाहते हैं तो आप यह भी कर सकते हैं। हालांकि, मुझे पंचांग का तरीका पसंद है।

# 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}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.