Python 将具有重复键的数据帧转换为字典
我有一个有两列的数据框。我想将此数据帧转换为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:
键
,同一行中其他列的元素是值
。但是,第一列中的条目重复-
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])}