python Pandas : How can I sum all of the values of a dictionary in a column of my dataframe?

标签 python dictionary pandas lambda sum

这是我的数据框:

    name                            count_dic
0  name1  {'x2,bv.': 435, 'x3': 4, 'x1': 123}
1  name2            {'x5': 98, 'x2,bv.': 435}

我想总结“count_dic”列中 dic 的所有值,得到如下内容:

    name                            count_dic   sum_vals
0  name1  {'x2,bv.': 435, 'x3': 4, 'x1': 123}    562
1  name2            {'x5': 98, 'x2,bv.': 435}    533

这是我尝试过的:

df_map.count_dic.apply(lambda L: sum(L.values())).sum()

但是我收到以下错误:

TypeError: unsupported operand type(s) for +: 'dict_values' and 'dict_values'

有人可以帮忙吗?

最佳答案

注意:您的数据帧结构对我来说有点奇怪,如果数据集变大,可能会表现得不太理想。


在任何情况下,您的代码看起来都是格式正确的[在 python 2.7.8 和 3.4.1 上测试]

 df = pd.DataFrame(columns = ['name','count_dic'])
 df.loc[0] = ['name0',{'x2,bv.': 435, 'x3': 4, 'x1': 123}]
 df.loc[1] = ['name1',{'x5': 98, 'x2,bv.': 435}]

 df.count_dic.apply(lambda x : sum(x.values())).sum()

       1095

如果你想按行显示值

 df.count_dic.apply(lambda x : sum(x.values()))

        0    562
        1    533
    Name: count_dic, dtype: int64

使用有一个更具体的问题,涉及到的变量类型不是 int,需要显式转换。

 df.count_dic.apply(lambda x : sum([int(y) for y in x.values())])

关于 python Pandas : How can I sum all of the values of a dictionary in a column of my dataframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729781/

相关文章:

python - 在多索引数据帧上应用重复序列

python - Pandas:如何将系列的多重索引折叠为日期时间索引?

python - 为什么将 multiprocessing 与 pandas apply 一起使用会导致如此显着的加速?

python - Jupyter 笔记本 - 无法从其他文件夹导入 python 函数

python - 在 tkinter 中,为什么 winfo_height() 总是返回 1?

python - 关于 read_csv 和 str dtype 的问题

python - 在新的 pandas 数据框列中计算年、月等日期时间差

python - sorted(dict, dict.get) 如何处理重复值

c# - 如果只需要读取一次,则在查找后从 C# 字典中删除项目的任何性能优势

python - 从字典描述的 python 字典创建加权 NetworkX 有向图