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

如何用Pandas处理嵌套字典中元组元素的筛选与排序?

解决方案

方法一:纯Python实现

1. 筛选符合条件的日期

遍历字典,检查每个日期下的元组是否存在第二个元素绝对值大于1的情况:

# 筛选存在元组第二个元素绝对值>1的日期
filtered_dates = []
for date, pos_dict in my_dict.items():
    has_large_value = any(abs(tpl[1]) > 1 for tpl in pos_dict.values())
    if has_large_value:
        filtered_dates.append(date)

print("符合条件的日期:", filtered_dates)
# 输出:符合条件的日期: ['2020_02_04']

2. 生成带最大绝对值的排序列表

先计算每个日期对应的最大绝对值(空日期记为nan),再按值排序:

import math

# 计算每个日期的最大绝对值
date_max_abs = {}
for date, pos_dict in my_dict.items():
    if not pos_dict:
        date_max_abs[date] = math.nan
    else:
        abs_values = [abs(tpl[1]) for tpl in pos_dict.values()]
        date_max_abs[date] = max(abs_values)

# 按值排序:nan排在最前,其余升序排列
sorted_list = sorted(date_max_abs.items(), key=lambda x: (math.isnan(x[1]), x[1]))

# 格式化输出(保留两位小数)
print("\n排序列表:")
for date, val in sorted_list:
    if not math.isnan(val):
        print(f"- '{date}': {round(val, 2)}")
    else:
        print(f"- '{date}': nan")

输出结果:

排序列表:
- '2020_02_06': nan
- '2020_02_05': 0.02
- '2020_02_10': 0.03
- '2020_02_04': 339.0

方法二:Pandas实现

先将嵌套字典展开为扁平化DataFrame,再进行聚合和排序:

import pandas as pd

# 展开嵌套字典为结构化DataFrame
data = []
for date, pos_dict in my_dict.items():
    if not pos_dict:
        data.append({"date": date, "value": pd.NA})
    else:
        for pos, tpl in pos_dict.items():
            data.append({"date": date, "value": tpl[1]})

df = pd.DataFrame(data)

# 1. 筛选符合条件的日期
filtered_dates = df[df["value"].abs() > 1]["date"].unique().tolist()
print("符合条件的日期:", filtered_dates)

# 2. 计算每个日期的最大绝对值并排序
date_max_df = df.groupby("date")["value"].apply(lambda x: x.abs().max() if not x.isna().all() else pd.NA)
# 排序:空值排在最前,其余按值升序
sorted_df = date_max_df.sort_values(key=lambda x: x.isna())

# 格式化输出
print("\n排序列表:")
for date, val in sorted_df.items():
    if pd.notna(val):
        print(f"- '{date}': {round(val, 2)}")
    else:
        print(f"- '{date}': nan")

说明

  • 纯Python方法无需依赖第三方库,适合轻量场景;
  • Pandas方法扩展性更强,适合后续复杂数据操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:50:20