gpt4 book ai didi

python - 具有重复索引的 Pandas 系列 to_dict;用列表值制作字典

转载 作者:行者123 更新时间:2023-12-04 01:09:11 27 4
gpt4 key购买 nike

如果您有一个带有唯一索引的简洁 pandas Series 对象,那么使用 pd.Series.to_dict() 可以如您所愿:它变成一个 Python dict,每个索引都指向其各自的值。

如果您有非唯一索引,这会变得复杂。我的预期行为是具有相同索引的值将组合到一个列表中,并且 dict 会将索引作为键,将列表作为值。相反,我观察到的是一个以索引为键的字典,而 Series 中只有一个值作为字典中的值。

有没有办法实现我的预期行为,内置于 pandas 或接近它?目前,我在 for 循环中手动将与每个索引匹配的值整理到 dict 中,循环遍历唯一索引值。有一个更好的方法吗?

编辑:这是一个例子:

my_series = pd.Series(['val_1', 'val_2', 'val_3', 'val_4', 'val_5'])
my_series.index = ['1', '1', '2', '2', '2']
my_series

产量

1    val_1
1 val_2
2 val_3
2 val_4
2 val_5
dtype: object

现在,to_dict() 具有 1:1 匹配行为:

my_series.to_dict()
{'1': 'val_2', '2': 'val_5'}

我希望看到的是:

{'1': ['val_1', 'val_2'], '2': ['val_3', 'val_4', 'val_5']}

我可以做到这一点

{idx:list(my_series[idx]) for idx in set(my_series.index)}
{'2': ['val_3', 'val_4', 'val_5'], '1': ['val_1', 'val_2']}

我想知道的是,在 pandas 中是否有更本地的方式来执行此操作,或者这是否是解决问题的最佳方式。

最佳答案

试试这个:

my_series.groupby(level=0).agg(list).to_dict()

Out[358]: {'1': ['val_1', 'val_2'], '2': ['val_3', 'val_4', 'val_5']}

关于python - 具有重复索引的 Pandas 系列 to_dict;用列表值制作字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56064677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com