You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas的groupby操作中合并DataFrame列中的字典

在Pandas GroupBy操作中合并分组内的字典列

假设我们有一个Pandas DataFrame df,其中mydict列存储字典数据:

mystring    mydict 
0     a           {'key1': 'value1'} 
1     a           {'key2': 'value2'}
2     b           {'key2': 'value2'}

我希望通过groupby操作合并每组内的字典,比如用类似df.groupby('mystring')['mydict'].apply(lambda x: merge_dictionaries(x))的方式。针对mystring为'a'的分组,预期输出是{'key1': 'value1', 'key2': 'value2'}。

我知道合并字典通常可以用dict1.update(dict2)方法,但不确定怎么在这个场景下实现。


创建示例DataFrame的代码

旧版本(使用append,仅适用于Pandas 2.0.1之前版本)

mycolumns = ['mystring', 'mydict']
df = pd.DataFrame(columns = mycolumns)
df = df.append(pd.DataFrame(['a', {'key1':'value1'}],mycolumns).T)
df = df.append(pd.DataFrame(['a', {'key2':'value2'}],mycolumns).T)
df = df.append(pd.DataFrame(['b', {'key3':'value3'}],mycolumns).T)
df = df.reset_index(drop=True)

新版本(使用concat,兼容Pandas 2.0.1及以上版本)

mycolumns = ['mystring', 'mydict']
df = pd.DataFrame(columns = mycolumns)
df = pd.concat([df, pd.DataFrame(['a', {'key1':'value1'}],mycolumns).T])
df = pd.concat([df, pd.DataFrame(['a', {'key2':'value2'}],mycolumns).T])
df = pd.concat([df, pd.DataFrame(['b', {'key3':'value3'}],mycolumns).T])
df = df.reset_index(drop=True)

不使用GroupBy的替代实现方式

遍历mystring的唯一值,逐个更新字典:

merged_dict = {}
for mystring in df.mystring.unique():
    for mydict in df[df.mystring==mystring]['mydict']:
        print(mydict)
        merged_dict.update(mydict)

内容的提问来源于stack exchange,提问作者Sheldon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:22:40