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

如何遍历字典中每第N个元素并合并对应DataFrame?

筛选字典中每第N个DataFrame并合并

方法步骤(Python 3.7+,字典保持插入顺序)

假设你的DataFrame字典名为df_dict,要选取每第3个元素(含第一个):

  1. 筛选目标元素
    利用enumerate获取字典项的索引,筛选索引满足idx % 3 == 0的项(索引从0开始,对应第1、4、7...个元素):

    n = 3
    # 筛选并创建新字典
    new_df_dict = {key: df for idx, (key, df) in enumerate(df_dict.items()) if idx % n == 0}
    
  2. 合并DataFrame
    使用pandas.concat合并筛选后的DataFrame:

    import pandas as pd
    
    # 合并并重置索引
    merged_df = pd.concat(new_df_dict.values(), ignore_index=True)
    
    # 可选:保留原字典的键作为来源标识(生成层级索引)
    merged_df = pd.concat(new_df_dict.values(), keys=new_df_dict.keys(), names=['source_key', 'original_index'])
    

兼容旧版Python(<3.7,字典无序)

如果你的Python版本低于3.7,字典不保证插入顺序,需要先对键排序再筛选:

n = 3
# 先对字典键排序(根据你的键类型选择合适的排序逻辑)
sorted_keys = sorted(df_dict.keys())
# 选取每第3个键
selected_keys = sorted_keys[::n]
# 创建新字典
new_df_dict = {key: df_dict[key] for key in selected_keys}

# 合并操作同上
merged_df = pd.concat(new_df_dict.values(), ignore_index=True)

说明

  • 索引判断逻辑:idx % n == 0对应从第一个元素开始,每间隔n-1个元素选取一个(比如n=3时,选索引0、3、6...)。
  • 如果需要从第k个元素开始选取,只需调整条件为(idx - k + 1) % n == 0(比如从第2个开始选每3个,条件为(idx -1) %3 ==0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:50:26