python pandas数据框列转换为dict键和值
Posted
技术标签:
【中文标题】python pandas数据框列转换为dict键和值【英文标题】:python pandas dataframe columns convert to dict key and value 【发布时间】:2013-08-03 11:09:43 【问题描述】:我有一个包含多列的 pandas 数据框,我想从两列构造一个 dict:一列作为 dict 的键,另一列作为 dict 的值。我该怎么做?
数据框:
area count
co tp
DE Lake 10 7
Forest 20 5
FR Lake 30 2
Forest 40 3
我需要将 area 定义为 key,count 为 dict 中的 value。提前谢谢你。
【问题讨论】:
【参考方案1】:如果lakes
是你的DataFrame
,你可以这样做
area_dict = dict(zip(lakes.area, lakes.count))
【讨论】:
在 0.17.1 版本中出现错误:TypeError: zip argument #2 must support iteration
解决方案:area_dict = dict(zip(lakes['area'], lakes['count']))
这个问题的其他答案***.com/questions/18695605/…
如果您希望字典值中有多个列怎么办?我在想area_dict = dict(zip(lakes.area, (lakes.count, lakes.other_column)))
之类的东西。您将如何做到这一点?
如果第二个参数有多个值,这将不起作用。【参考方案2】:
使用 pandas 可以做到:
如果 Lakes 是您的 DataFrame:
area_dict = lakes.to_dict('records')
【讨论】:
给定示例中没有“记录”列。同样在这种情况下,索引将是关键,这不是我们想要的。 @MichaelD 'records' 不是一列。这是参数orient
的一个选项。
这实际上会输出以下格式的字典列表:['area': 10, 'count': 7, 'area': 20, 'count': 5。 ..] 而不是 key->value 字典。【参考方案3】:
如果你想和熊猫一起玩,你也可以这样做。不过,我喜欢潘根根的方式。
# 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
【讨论】:
【参考方案4】:如果 'lakes' 是您的 DataFrame,您可以也执行以下操作:
# 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)
我的解决方案:
area_dict = lakes.set_index("area")["count"].to_dict()
或@punchagan 的解决方案(我更喜欢)
area_dict = dict(zip(lakes.area, lakes.count))
两者都应该工作。
【讨论】:
【参考方案5】:回答@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
PS。抱歉,我没有在@Jessie Marks 问题下直接回复,它的新帐户,我还不能这样做。
【讨论】:
以上是关于python pandas数据框列转换为dict键和值的主要内容,如果未能解决你的问题,请参考以下文章
如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 将其值转换为列?
将所有数据框列转换为浮动的最快方法 - pandas astype 慢