这是我的数据框:
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/