gpt4 book ai didi

python - 在数据框列中对具有相同键的字典求和/相乘

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:01 27 4
gpt4 key购买 nike

给定一个包含多列字典的数据框,我如何将数据框中的键相加和/或相乘以获得一列

                       A                        B
{"ab":1, "b":2, "c":3} {"ab":1, "b":3, "c":5}

所以加在一起你会得到另一列

                    C
{"ab":2, "b":5, "c":8}

或者相乘得到

                    C
{"ab":1, "b":6, "c":15}

我知道如果它们只是数字列,我可以使用 sum/etc.,但如果它们是字典列,最好的方法是什么?一个 lambda 函数?

最佳答案

朴素的方法:

使用json_normalize它可以很好地处理字典或字典列表作为数据输入:

from pandas.io.json import json_normalize 
processed_df = json_normalize(df.T.to_dict('list'), 0)

enter image description here

总和:

processed_df.sum()    # Append .to_dict() if you want to render it as a dictionary
ab 2
b 5
c 8
dtype: int64

要查找产品:

processed_df.prod()    # Append .to_dict() if you want to render it as a dictionary 
ab 1
b 6
c 15
dtype: int64

如果数据框有太多的列/行,那将是一种矫枉过正,尽管可以通过将其融合为具有单个列标题的长表格来克服。但同样,将其重新整形以对齐匹配的行并进行计算会很麻烦。


更通用的方法:

示例DF:

df = pd.DataFrame({'A': [{"ab":1, "b":2, "c":3}, {'b':4, 'c':5, 'ab':6}], 
'B': [{"ab":7, "b":8, "c":9}, {'b':10, 'c':11, 'ab':12}]})
df

enter image description here

计算总和:

df.stack().apply(pd.Series).sum(level=0)

enter image description here

计算产品:

df.stack().apply(pd.Series).prod(level=0)

enter image description here

分配它回到一个新列:

df['C'] = df.stack().apply(pd.Series).sum(level=0).to_dict('records')
df

enter image description here

关于python - 在数据框列中对具有相同键的字典求和/相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com