熊猫:将数据帧转换为列表的dict

use*_*733 6 python dataframe pandas

我有这样的数据帧:

col1, col2
A      0
A      1
B      2
C      3
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

{ A: [0,1], B: [2], C: [3] }
Run Code Online (Sandbox Code Playgroud)

我试过了:

df.set_index('col1')['col2'].to_dict()
Run Code Online (Sandbox Code Playgroud)

但这不太正确.我的第一个问题是'A'重复,我最终得到A:1(0被覆盖).怎么修?

Ale*_*der 6

您可以在groupby上使用字典理解.

>>> {idx: group['col2'].tolist() 
     for idx, group in df.groupby('col1')}
{'A': [0, 1], 'B': [2], 'C': [3]}
Run Code Online (Sandbox Code Playgroud)


piR*_*red 6

解决方案

df.groupby('col1')['col2'].apply(lambda x: x.tolist()).to_dict()

{'A': [0, 1], 'B': [2], 'C': [3]}
Run Code Online (Sandbox Code Playgroud)