如何按时间(HH:MM:SS)筛选数据并生成对应独立DataFrame?
按时间拆分DataFrame为独立数据集的解决方案
原始数据集
先基于你的数据创建初始DataFrame:
import pandas as pd data = { 'Time': ['09:15:00', '10:15:00', '09:15:00', '10:15:00', '09:15:00', '10:15:00'], 'Value': [25, 45, 32, 36, 56, 78] } df = pd.DataFrame(data)
初始DataFrame内容:
| Time | Value |
|---|---|
| 09:15:00 | 25 |
| 10:15:00 | 45 |
| 09:15:00 | 32 |
| 10:15:00 | 36 |
| 09:15:00 | 56 |
| 10:15:00 | 78 |
方法一:直接筛选生成独立DataFrame
如果时间类别较少,直接通过布尔筛选快速生成目标DataFrame:
# 生成09:15:00对应的df0915 df0915 = df[df['Time'] == '09:15:00'].reset_index(drop=True) # 生成10:15:00对应的df1015 df1015 = df[df['Time'] == '10:15:00'].reset_index(drop=True)
生成的df0915内容:
| Time | Value |
|---|---|
| 09:15:00 | 25 |
| 09:15:00 | 32 |
| 09:15:00 | 56 |
生成的df1015内容:
| Time | Value |
|---|---|
| 10:15:00 | 45 |
| 10:15:00 | 36 |
| 10:15:00 | 78 |
方法二:分组遍历自动生成变量
如果后续时间类别较多,手动筛选冗余,可通过分组遍历自动生成对应变量:
# 按Time列分组,遍历每个分组并生成对应变量 for time_val, group in df.groupby('Time'): # 提取时间前5位并去掉冒号,作为变量名前缀 var_prefix = time_val[:5].replace(':', '') var_name = f"df{var_prefix}" # 将分组数据赋值给变量,重置索引避免保留原索引 globals()[var_name] = group.reset_index(drop=True)
执行后会自动生成df0915和df1015,内容与方法一完全一致。
内容的提问来源于stack exchange,提问作者Ravindra
相关产品推荐
相关产品推荐

