Pandas:如何将具有重复索引值的数据框转换为字典

Posted

技术标签:

【中文标题】Pandas:如何将具有重复索引值的数据框转换为字典【英文标题】:Pandas: how to convert dataframe with duplicate index values to a dictionary 【发布时间】:2021-02-14 19:12:43 【问题描述】:

我有一个 DataFrame df_test 如下:

a   b   c
5   7   1
6   7   0
15  17  1
16  17  0

问题

我正在尝试从此数据框中创建一个字典,其中 b 列作为索引。请注意b 列中的值是重复的。当我使用下面给出的代码创建字典时,它只显示最后一行作为输出。如何创建字典以包含数据框中提供的所有信息。

测试代码

以下是代码:

df_test.set_index('b', inplace=True)
df_test.T.to_dict(orient="list")

输出

7: [6, 0], 17: [16, 0]

期望的输出

输出应包括与每个键对应的所有行,而不仅仅是最后一行。类似于但不限于如下所示的输出:

7: [[5, 1],[6, 0]], 17: [[15, 1],[16, 0]]

【问题讨论】:

【参考方案1】:

使用DataFrame.set_index 处理所有在lambda 函数中没有b 的列,以便转换为嵌套列表,然后转换为字典:

d = df_test.set_index('b').groupby('b').apply(lambda x : x.to_numpy().tolist()).to_dict()
print (d)
7: [[5, 1], [6, 0]], 17: [[15, 1], [16, 0]]

【讨论】:

以上是关于Pandas:如何将具有重复索引值的数据框转换为字典的主要内容,如果未能解决你的问题,请参考以下文章

查找具有 NaN 值的 DataFrame 列表的索引 - Pandas

Pandas:合并具有不同索引和缺失值的两个数据框

python pandas将数据框转换为具有多个值的字典

python&pandas:列表中具有值的子集数据框[重复]

在 Pandas 数据框中按组过滤具有最小值的行 [重复]

如何将方法应用于 Pandas Dataframe [重复]