【发布时间】:2016-09-06 04:59:41
【问题描述】:
我有一个这样的数据框:
col1, col2
A 0
A 1
B 2
C 3
我想得到这个:
{ A: [0,1], B: [2], C: [3] }
我试过了:
df.set_index('col1')['col2'].to_dict()
但这并不完全正确。我遇到的第一个问题是重复“A”,我最终只得到 A:1(0 被覆盖)。怎么修?
【问题讨论】:
我有一个这样的数据框:
col1, col2
A 0
A 1
B 2
C 3
我想得到这个:
{ A: [0,1], B: [2], C: [3] }
我试过了:
df.set_index('col1')['col2'].to_dict()
但这并不完全正确。我遇到的第一个问题是重复“A”,我最终只得到 A:1(0 被覆盖)。怎么修?
【问题讨论】:
您可以在 groupby 上使用字典推导。
>>> {idx: group['col2'].tolist()
for idx, group in df.groupby('col1')}
{'A': [0, 1], 'B': [2], 'C': [3]}
【讨论】:
df.groupby('col1')['col2'].apply(lambda x: x.tolist()).to_dict()
{'A': [0, 1], 'B': [2], 'C': [3]}
【讨论】: