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

如何处理含元组键的字典,生成指定规则的pandas DataFrame?

实现方法

这问题我之前处理类似需求时也碰到过,分两步就能搞定:先从字典里筛选出每个第一键对应值最大的项,再把这些项转换成你要的DataFrame。我给你两种实用的实现思路:

方法一:纯Python字典操作(无需pandas前置处理)

这种方法先通过遍历字典完成分组筛选,再转成DataFrame,逻辑直观易懂:

# 定义原始字典
original_dict = {('a','1'):2, ('a','2'):1, ('b','1'):3, ('b','2'):2}

# 创建临时字典,记录每个第一键对应的最大值项
max_item_map = {}
for tuple_key, val in original_dict.items():
    first_key = tuple_key[0]
    # 如果当前第一键未记录,或当前值比已存的最大值大,就更新
    if first_key not in max_item_map or val > max_item_map[first_key][1]:
        max_item_map[first_key] = (tuple_key, val)

# 提取筛选后的元组键
filtered_keys = [item[0] for item in max_item_map.values()]

# 转成目标DataFrame
import pandas as pd
df = pd.DataFrame(filtered_keys, columns=['key', 'value'])
print(df)

运行后输出的结果就是你要的:

key value
0   a     1
1   b     1

方法二:用pandas分组直接处理

如果习惯用pandas的话,可以直接把字典转成DataFrame后,用分组取最大值的方式实现:

import pandas as pd

original_dict = {('a','1'):2, ('a','2'):1, ('b','1'):3, ('b','2'):2}

# 把字典转成原始DataFrame,拆分元组键为两列
raw_df = pd.DataFrame(original_dict.items(), columns=['tuple_key', 'value'])
raw_df[['key', 'sub_key']] = pd.DataFrame(raw_df['tuple_key'].tolist(), index=raw_df.index)

# 按key分组,取每个组中value最大的行,再整理成目标格式
result_df = raw_df.loc[raw_df.groupby('key')['value'].idxmax(), ['key', 'sub_key']]
result_df.rename(columns={'sub_key': 'value'}, inplace=True)
result_df.reset_index(drop=True, inplace=True)

print(result_df)

这种方法更适合后续还要做其他pandas数据处理的场景,一步到位完成筛选和格式转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:51:09