这是我的数据框:
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'
有人可以帮忙吗?
答案 0 :(得分:3)
注意:您的数据框结构对我来说有点奇怪,如果数据集变大,可能会表现得非常不理想。
在任何情况下,您的代码都显示格式正确[在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())])