Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在所有行的数据框中查找字典的总和?_Python_Pandas_Counter - Fatal编程技术网

Python 如何在所有行的数据框中查找字典的总和?

Python 如何在所有行的数据框中查找字典的总和?,python,pandas,counter,Python,Pandas,Counter,我有一个数据帧 df = pd.DataFrame({'keywords': [{'a': 3, 'b': 4, 'c': 5}, {'c':1, 'd':2}, {'a':5, 'c':21, 'd':4}, {'b':2, 'c':1, 'g':1, 'h':1, 'i':1}]}) 我想在所有行中添加所有元素,这些元素将在不使用iterrows的情况下给出结果: a: 8 b: 6 c: 28 d: 6 g: 1 h: 1 i: 1 注意:在原始数据帧的一行中,没有元素出现两次。使用,

我有一个数据帧

df = pd.DataFrame({'keywords': [{'a': 3, 'b': 4, 'c': 5}, {'c':1, 'd':2}, {'a':5, 'c':21, 'd':4}, {'b':2, 'c':1, 'g':1, 'h':1, 'i':1}]})
我想在所有行中添加所有元素,这些元素将在不使用
iterrows
的情况下给出结果:

a: 8
b: 6
c: 28
d: 6
g: 1
h: 1
i: 1
注意:在原始数据帧的一行中,没有元素出现两次。

使用,您可以对
计数器
对象的一个iterable进行
求和。由于
Counter
dict
的一个子类,因此您可以馈送到


不确定这在优化方面与@jpp的答案相比如何,但我会试一试

# What we're starting out with
df = pd.DataFrame({'keywords': [{'a': 3, 'b': 4, 'c': 5}, {'c':1, 'd':2}, {'a':5, 'c':21, 'd':4}, {'b':2, 'c':1, 'g':1, 'h':1, 'i':1}]})

# Turns the array of dictionaries into a DataFrame
values_df = pd.DataFrame(df["keywords"].values.tolist())

# Sums up the individual keys
sums = {key:values_df[key].sum() for key in values_df.columns}

我想我可以用收藏品来做,但不知道怎么做。谢谢有没有一种更节省内存的方法?我的数据帧很大,需要很长时间。@Panaceanob,我已经更新到
map(计数器,df['keywords'))
。从这里看不出有什么改进。您已经选择了一个内存效率非常低的起点(在数据帧中保存字典)。不建议这样做
sum
+
map
是懒惰的,内存不是瓶颈,也不是它花费很长时间的原因。
# What we're starting out with
df = pd.DataFrame({'keywords': [{'a': 3, 'b': 4, 'c': 5}, {'c':1, 'd':2}, {'a':5, 'c':21, 'd':4}, {'b':2, 'c':1, 'g':1, 'h':1, 'i':1}]})

# Turns the array of dictionaries into a DataFrame
values_df = pd.DataFrame(df["keywords"].values.tolist())

# Sums up the individual keys
sums = {key:values_df[key].sum() for key in values_df.columns}