如何将字典的pandas列合并为一个字典

qco9c6ql  于 2023-06-28  发布在  其他
关注(0)|答案(3)|浏览(115)

我在pandas数据框中有一列字典:

sr = pd.Series([{'sugar': 1, 'pepper': 2},{'salt': 2, 'sugar': 2},{'pepper': 3, 'sugar': 4}]) 
df = pd.DataFrame({'column1': sr})
df 

    column1
0   {'sugar': 1, 'pepper': 2}
1   {'salt': 2, 'sugar': 2}
2   {'pepper': 3, 'sugar': 4}

如何将列'column1'中的所有字典合并到一个字典中,其中值是其字典中相应值的总和?
这个问题和这个问题很相似:link
然而,我没有得到计数器方法来求和。
预期输出:

{'sugar': 7, 'pepper': 5, 'salt': 2}

我尝试了一些lambda函数来迭代所有行,并将每个键分解为列,然后求和。然而,这并不起作用,因为实际的df相当大。

f87krz0w

f87krz0w1#

pd.DataFrame.from_records

pd.DataFrame.from_records(df['column1']).sum().to_dict()
{'sugar': 7.0, 'pepper': 5.0, 'salt': 2.0}
dl5txlt9

dl5txlt92#

这里有一个可能的选择:

out = df.squeeze().apply(pd.Series).sum().convert_dtypes().to_dict() # or `sr.apply`

输出:

print(out)

{'sugar': 7, 'pepper': 5, 'salt': 2}
gupuwyp2

gupuwyp23#

df['column1'].apply(pd.Series).sum().to_dict()
#output
{'sugar': 7.0, 'pepper': 5.0, 'salt': 2.0}

相关问题