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

如何编写自动化函数将DataFrame拆分为含日期列的多个子DataFrame

拆分DataFrame为含日期列的子DataFrame集合

你可以通过遍历非日期列,将每一列与指定的日期列组合成独立的子DataFrame,以下是实现这个需求的自动化函数:

实现代码

import pandas as pd

def split_df_by_columns(df, date_col):
    # 筛选出所有非日期列
    non_date_cols = [col for col in df.columns if col != date_col]
    # 用字典存储子DataFrame,键为原列名,方便后续索引
    sub_dataframes = {}
    
    for col in non_date_cols:
        # 组合日期列与当前列,生成子DataFrame并复制避免视图关联
        sub_dataframes[col] = df[[date_col, col]].copy()
    
    # 若需返回列表形式而非字典,替换为 return list(sub_dataframes.values())
    return sub_dataframes

使用示例

假设你有如下原始DataFrame:

# 构造示例数据
sample_data = {
    'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
    'sales': [100, 150, 200],
    'profit': [20, 30, 40],
    'customers': [50, 60, 70]
}
df = pd.DataFrame(sample_data)
df['date'] = pd.to_datetime(df['date'])  # 确保日期列格式正确

调用函数拆分:

# 指定日期列名为'date',拆分得到子DataFrame字典
split_result = split_df_by_columns(df, 'date')

# 访问单个子DataFrame,比如sales对应的子DF
print(split_result['sales'])

关键说明

  • 使用.copy()是为了避免子DataFrame与原DataFrame共享数据视图,防止修改子DF时意外影响原数据
  • 返回字典的形式可以通过原列名快速定位对应的子DataFrame,若只需要列表形式,直接返回list(sub_dataframes.values())即可,此时子DF的数量正好是原DataFrame列数减1(排除日期列)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:33:32