如何在PySpark/Python中按起始时间筛选DataFrame并拆分存储?
按日期拆分DataFrame为多个独立数据集
问题描述
给定如下DataFrame,需要根据start_time列的日期值,将不同日期的记录分别存入单独的DataFrame:
输入DataFrame
name start_time AA 2022-11-16 AAA 2022-11-15 BBB 2022-11-14
要求最终每个日期对应一个独立的DataFrame,例如2022-11-16的记录存入df1,2022-11-15存入df2,以此类推。
实现方案
以下是基于Pandas的实现代码,步骤清晰且易于扩展:
import pandas as pd # 初始化输入DataFrame(如果是从外部读取,替换为pd.read_csv/pd.read_excel等) df = pd.DataFrame({ 'name': ['AA', 'AAA', 'BBB'], 'start_time': ['2022-11-16', '2022-11-15', '2022-11-14'] }) # 转换start_time为日期类型(确保日期匹配准确) df['start_time'] = pd.to_datetime(df['start_time']).dt.date # 获取所有唯一日期 unique_dates = df['start_time'].unique() # 动态创建对应日期的DataFrame for i, target_date in enumerate(unique_dates, start=1): # 筛选对应日期的记录 date_df = df[df['start_time'] == target_date] # 将筛选结果赋值到df1、df2...这类变量中 locals()[f'df{i}'] = date_df # 验证输出 print("df1 内容:") print(df1) print("\ndf2 内容:") print(df2) print("\ndf3 内容:") print(df3)
关键说明
- 日期类型转换:将
start_time转为date类型,避免因字符串格式差异导致的匹配错误 - 动态变量创建:使用
locals()根据日期顺序生成df1、df2等变量,也可以改用字典存储(如date_dfs[str(target_date)] = date_df),更方便后续批量操作 - 扩展性:如果DataFrame中有更多日期,代码会自动生成对应数量的DataFrame,无需手动修改
输出结果
执行代码后会得到:
df1:包含2022-11-16的记录df2:包含2022-11-15的记录df3:包含2022-11-14的记录
内容的提问来源于stack exchange,提问作者Anos
相关产品推荐
相关产品推荐

