gpt4 book ai didi

python - 根据另一列获取一列中最常见的值/将 pandas 系列的系列转换为列表的字典

转载 作者:行者123 更新时间:2023-12-01 00:01:26 25 4
gpt4 key购买 nike

是否有更简单的方法将 pandas 系列转换为忽略值的列表字典?而不是在 for 循环中迭代该系列?我想根据列获取数据框中最常见的值

df = pd.DataFrame([[1,10],[1,10], [1, 11], [1,11] ,[2,20],[2,21], [3,30], [3,30], [3,31]], columns=['A', 'B'])
common_values = df.groupby(['A'])['B'].value_counts()
common_values = common_values[common_values>1]

我想最后得到

{1: [10,11], 3: [30]}

最佳答案

Pandas 解决方案是可能的,但速度较慢,因为许多操作 - 从 MultiIndex 创建 DataFrame 并聚合 list:

d = common_values.index.to_frame(index=False).groupby('A')['B'].apply(list).to_dict()
print (d)
{1: [10, 11], 3: [30]}

所以使用collections.defaultdict为了获得更好的性能:

from collections import defaultdict

d = defaultdict(list)
for a, b in common_values.index:
d[a].append(b)

d = dict(d)
print (d)
{1: [10, 11], 3: [30]

关于python - 根据另一列获取一列中最常见的值/将 pandas 系列的系列转换为列表的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60320560/

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