পাইথন পান্ডাস ডেটা ফ্রেম কলামগুলি ডিক কী এবং মানতে রূপান্তর করে


92

আমার একাধিক কলাম সহ একটি পান্ডাস ডেটা ফ্রেম রয়েছে এবং আমি দুটি কলাম থেকে একটি ডিক তৈরি করতে চাই: একটি ডিকের কী হিসাবে এবং অন্যটি ডকের মান হিসাবে। আমি এটা কিভাবে করবো?

ডেটাফ্রেম:

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

আমাকে অঞ্চলটি কী হিসাবে সংজ্ঞা দেওয়া দরকার, ডিকের মান হিসাবে গণনা করতে হবে। তুমাকে অগ্রিম ধন্যবাদ.

উত্তর:


213

যদি lakesআপনার হয় তবে DataFrameআপনি এর মতো কিছু করতে পারেন

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

4
0.17.1 সংস্করণে ত্রুটি পান:TypeError: zip argument #2 must support iteration
jezrael

19
সমাধান:area_dict = dict(zip(lakes['area'], lakes['count']))
জিজরেল

4
এই প্রশ্নের অন্যান্য উত্তরগুলি stackoverflow.com/questions/18695605/…
বেন ফুলটন

4
আপনি যদি চান যে একাধিক কলাম অভিধানের মান হতে পারে? আমি এমন কিছু ভাবছি area_dict = dict(zip(lakes.area, (lakes.count, lakes.other_column)))। কীভাবে আপনি এটি ঘটবে?
জেসি

4
যদি দ্বিতীয় যুক্তির একাধিক মান থাকে তবে এটি কাজ করবে না।
পিএনভি

9

পান্ডাস দিয়ে এটি করা যেতে পারে:

হ্রদগুলি যদি আপনার ডেটাফ্রেম হয়:

area_dict = lakes.to_dict('records')

4
প্রদত্ত উদাহরণে কোনও 'রেকর্ড' কলাম নেই। এছাড়াও এই জাতীয় ক্ষেত্রে সূচি কী হবে, যা আমরা চাই না।
মাইকেল ডি

11
@ মিশেলডি 'রেকর্ডস' কোনও কলাম নয়। এটি তর্কের পক্ষে একটি বিকল্প orient
ঝেং লিউ

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}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.