Python 将具有重复键的数据帧转换为字典

Python 将具有重复键的数据帧转换为字典,python,pandas,Python,Pandas,我有一个有两列的数据框。我想将此数据帧转换为python字典。我希望第一列的元素是键,同一行中其他列的元素是值。但是,第一列中的条目重复- Keys Values 1 1 1 6 1 9 2 3 3 1 3 4 我想要的dict是-{1:[1,6,9],2:[3],3:[1,4]} 我正在使用代码-mydict=df.set_index('Keys').T.to_dict('list')但是,输出只有唯一的键值{1:

我有一个有两列的数据框。我想将此数据帧转换为python字典。我希望第一列的元素是
,同一行中其他列的元素是
。但是,第一列中的条目重复-

Keys    Values
1       1
1       6
1       9
2       3
3       1
3       4
我想要的
dict是-
{1:[1,6,9],2:[3],3:[1,4]}

我正在使用代码-
mydict=df.set_index('Keys').T.to_dict('list')
但是,输出只有唯一的键值<代码>{1:[9],2:[3],3:[4]}

IIUC您可以在
'Keys'
列上,然后
列表
并调用:

将上述内容分解为以下步骤:

In[35]:
# groupby on the 'Keys' and apply list to group values into a list
df.groupby('Keys')['Values'].apply(list)
Out[35]: 
Keys
1    [1, 6, 9]
2          [3]
3       [1, 4]
Name: Values, dtype: object
转换成口述

In[37]:
# make a dict
df.groupby('Keys')['Values'].apply(list).to_dict()
Out[37]: {1: [1, 6, 9], 2: [3], 3: [1, 4]}
感谢@p.Tillman的建议,
到_frame
是不必要的,他很荣幸

试试这个

df.groupby('Keys')['Values'].unique().to_dict()
输出:

{1: array([1, 6, 9]), 2: array([3]), 3: array([1, 4])}

使用groupBy怎么样?为什么你要使用to_frame而不是直接对你从apply获得的序列进行记录?
{1: array([1, 6, 9]), 2: array([3]), 3: array([1, 4])}