python - 将具有重复键的 Pandas DataFrame 转换为字典

标签 python pandas

我有一个包含两列的 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/

相关文章:

python - 如何在 PyMC3 中定义一个模型,其中一个参数在多个条件下限制为相同值

python - 计算S3存储桶内文件夹的大小

sql-server - 将存储过程选择结果读入 pandas 数据帧

python - 如何对行进行分组,在一列中计数并在另一列中求和?

python - Pandas :枚举索引中的重复项

python - 返回序列lstm keras的输出是什么

python - 使 numpy 数组单调,无需 Python 循环

python - Debian8.7 上使用 uwsgi/nginx 的 Django 的内部服务器错误

javascript - 将 pandas 数据帧转换为自定义 JSON 格式(然后转换为 JS 对象)

python - 使用 Datetimeindex 选择行