python pandas将数据框转换为具有多个值的字典

Posted

技术标签:

【中文标题】python pandas将数据框转换为具有多个值的字典【英文标题】:python pandas convert dataframe to dictionary with multiple values 【发布时间】:2013-12-05 10:31:24 【问题描述】:

我有一个包含 2 列地址和 ID 的数据框。我想在字典中合并具有相同地址的 ID

import pandas as pd, numpy as np

df = pd.DataFrame('Address' : ['12 A', '66 C', '10 B', '10 B', '12 A', '12 A'],
                'ID' : ['Aa', 'Bb', 'Cc', 'Dd', 'Ee', 'Ff'])
AS=df.set_index('Address')['ID'].to_dict()

print df

  Address  ID
0    12 A  Aa
1    66 C  Bb
2    10 B  Cc
3    10 B  Dd
4    12 A  Ee
5    12 A  Ff

print AS

'66 C': 'Bb', '12 A': 'Ff', '10 B': 'Dd'

我想要的是让副本存储多个值,例如:

'66 C': ['Bb'], '12 A': ['Aa','Ee','Ff'], '10 B': ['Cc','Dd']

【问题讨论】:

【参考方案1】:

我认为您可以在这里使用groupby 和字典理解:

>>> df
  Address  ID
0    12 A  Aa
1    66 C  Bb
2    10 B  Cc
3    10 B  Dd
4    12 A  Ee
5    12 A  Ff
>>> k: list(v) for k,v in df.groupby("Address")["ID"]
'66 C': ['Bb'], '12 A': ['Aa', 'Ee', 'Ff'], '10 B': ['Cc', 'Dd']

【讨论】:

什么是我有多个列,我需要 df.groupby('Adress')['ID','XX']?【参考方案2】:

回应关于多列的评论:

>>> df
  Address  ID  Name
0    12 A  Aa  Alpha
1    66 C  Bb  Bravo
2    10 B  Cc  Charlie
3    10 B  Dd  Delta
4    12 A  Ee  Edgar
5    12 A  Ff  Frank
>>> k: v.to_dict() for k,v in df.groupby("Address")

【讨论】:

以上是关于python pandas将数据框转换为具有多个值的字典的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何将具有重复索引值的数据框转换为字典

使用 Python pandas 将具有逗号值的字符串转换为多层索引的单独行

如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列

Pandas 将具有多个值的行数据合并到列的 Python 列表中

Python:如何将 Pandas Dataframe 行值转换为单个列?

将多个火花数据框列转换为具有列表类型的单列