Python中如何根据timestamp的日期拆分生成多个dataframe
按日期拆分DataFrame实现方案
- 第一步:转换时间列类型(若
datetime列已经是pandas的datetime64类型可直接跳过)
import pandas as pd df['datetime'] = pd.to_datetime(df['datetime'])
注意:如果数据中存在
datetime为空的行,可在分组前先执行df = df.dropna(subset=['datetime'])过滤无效数据。
- 第二步:按日期分组生成映射字典(更灵活的调用方式,直接用日期作为键即可取到对应数据)
# 生成结构为 {日期: 对应日期的DataFrame} 的字典 date_grouped = dict(tuple(df.groupby(df['datetime'].dt.date))) # 调用示例:取2021-09-28对应的DataFrame target_date = pd.to_datetime('2021-09-28').date() df_20210928 = date_grouped[target_date]
该方法无需提前对时间列排序,无论原数据的timestamp是否乱序、是否连续,都会自动把同一日期下所有时分秒的行分到同一组,完全匹配你需要的当天00:00:00.001~23:59:59.999数据范围要求。
- 可选:生成
df1、df2...dfn形式的独立变量
如果需要严格按照你要求的命名规则生成独立变量,可在上述分组操作后新增如下代码:
# 按日期升序排列后生成对应独立变量 sorted_dates = sorted(date_grouped.keys()) for idx, date in enumerate(sorted_dates, start=1): globals()[f'df{idx}'] = date_grouped[date]
- 可选:验证拆分结果
for idx, date in enumerate(sorted_dates, start=1): temp_df = globals()[f'df{idx}'] print(f"df{idx} 对应日期: {date}, 数据行数: {len(temp_df)}, 时间范围: {temp_df['datetime'].min()} ~ {temp_df['datetime'].max()}")
内容的提问来源于stack exchange,提问作者Peacepieceonepiece
相关产品推荐
相关产品推荐

