我有一个包含两列的 DataFrame。我想将此 DataFrame 转换为 python 字典。我希望第一列的元素是keys
,同一行中其他列的元素是values
。但是,第一列中的条目是重复的 -
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 你可以 groupby
在 'Keys'
列上,然后 apply
列出
并调用to_dict
:
In[32]:
df.groupby('Keys')['Values'].apply(list).to_dict()
Out[32]: {1: [1, 6, 9], 2: [3], 3: [1, 4]}
将上述分解为步骤:
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 提出 to_frame
不必要的建议,向他致敬
关于python - 将具有重复键的 Pandas DataFrame 转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50505784/