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

如何拼接循环生成的30个独立pandas DataFrame为单个DataFrame?

解决方法:拼接独立生成的每日DataFrame

嗨,我来帮你搞定这个DataFrame拼接的问题!不管这些data_day是怎么生成的,核心思路都是先把它们集中到一个列表里,再用Pandas的concat()方法一次性合并,具体步骤如下:

步骤1:收集所有每日DataFrame到列表

首先,你需要把这30个独立的data_day DataFrame全部放进一个列表里。如果它们的命名是有规律的(比如data_day_1、data_day_2…data_day_30),可以手动逐个添加,或者用循环批量获取:

方式A:手动添加(适合数量不多的情况)

# 创建空列表用于存储所有每日DataFrame
daily_dfs = []

# 逐个添加每个data_day
daily_dfs.append(data_day_1)
daily_dfs.append(data_day_2)
# ... 中间省略其他27个 ...
daily_dfs.append(data_day_30)

方式B:批量获取(如果命名有规律)

如果你的data_day是按序号命名的,可以通过globals()或locals()来批量获取变量,避免手动重复输入:

daily_dfs = []
for i in range(1, 31):
    # 根据序号拼接变量名,从全局变量中获取对应的DataFrame
    df_name = f"data_day_{i}"
    daily_dfs.append(globals()[df_name])

步骤2:合并所有DataFrame

用Pandas的pd.concat()方法把列表里的所有DataFrame合并成一个最终的final_data_day:

import pandas as pd

# 合并列表中的DataFrame,ignore_index=True用于重置合并后的索引,避免重复
final_data_day = pd.concat(daily_dfs, ignore_index=True)

额外优化建议

  • 确保列名一致:合并前要确认所有data_day的列名完全相同,否则合并后不同列名的部分会填充NaN,影响数据完整性。
  • 按日期排序:如果你的数据包含日期列(比如timestamp),合并后可以按日期重新排序,让数据更规整:
    # 假设日期列是'timestamp',按日期排序并重置索引
    final_data_day = final_data_day.sort_values(by='timestamp').reset_index(drop=True)
    
  • 提前收集更高效:如果之后还有类似需求,建议在生成data_day的过程中直接把它添加到列表里,比如在处理每日数据的环节就完成收集,避免事后手动整理:
    daily_dfs = []
    # 假设你有一个包含所有目标日期的列表date_list
    for single_date in date_list:
        # 提取当日数据并生成新特征
        data_day = df[df['timestamp'].dt.date == single_date].copy()
        # 这里添加你的新特征生成代码...
        # 直接将生成的data_day加入列表
        daily_dfs.append(data_day)
    # 最后合并
    final_data_day = pd.concat(daily_dfs, ignore_index=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:32:13