具有多列的python pandas数据帧,dict只需要两列。一个是dict的键,另一个是dict的值。我怎么能这样做?
数据帧:
area count
co tp
DE Lake 10 7
Forest 20 5
FR Lake 30 2
Forest 40 3
需要将区域定义为键,在dict中计为值。提前谢谢你。
答案 0 :(得分:113)
如果lakes
是DataFrame
,您可以执行类似
area_dict = dict(zip(lakes.area, lakes.count))
答案 1 :(得分:1)
使用pandas可以完成:
如果您的数据框是湖泊:
area_dict = lakes.to_dict('records')
答案 2 :(得分:1)
如果“湖泊”是您的 DataFrame,您可以也执行以下操作:
while (in_file >> color >> category >> age >> value) {
cout.width(10);
cout.setf(ios::right);
cout << color;
cout.width(10);
cout.setf(ios::right);
cout << category;
cout.width(10);
cout.setf(ios::right);
cout << age;
cout.width(10);
cout.setf(ios::right);
cout << value << endl;
}
# Your dataframe
lakes = pd.DataFrame({'co tp': ['DE Lake', 'Forest', 'FR Lake', 'Forest'],
'area': [10, 20, 30, 40],
'count': [7, 5, 2, 3]})
lakes.set_index('co tp', inplace=True)
或@punchagan 的解决方案(我更喜欢)
area_dict = lakes.set_index("area")["count"].to_dict()
两者都应该有效。
答案 3 :(得分:1)
回答@Jessie Marks 的问题,如果你想使用多列作为键/值,如何使用这个 dict(zip(***)) 方法,答案是压缩拉链;例如:
dict(zip(df['key'], zip(df["value col 1"], df_['value col 1'])))
或者如果您希望使用多列作为键:
dict(zip(zip(df['key 1'], df['key 2']), zip(df["value col 1"], df_['value col 1'])))
这在 pandas v1.1.5 上对我有用;蟒蛇 3.6.13
附注。抱歉,我不会直接在 @Jessie Marks 问题下回复,它的新帐户,我还不能这样做。
答案 4 :(得分:0)
如果您想和熊猫玩耍,也可以这样做。但是,我喜欢punchagan的方式。
# 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}