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将数据框转换为具有多个值的字典的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python pandas 将具有逗号值的字符串转换为多层索引的单独行
如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列
Pandas 将具有多个值的行数据合并到列的 Python 列表中