Python DataFrame 根据时间进行切分/分割/groupby数据

有个需求是根据时间把一个df进行拆分成几部分数据 

首先是根据单位时间,例如每天,每分钟,每个月这种,就可以直接使用下面的代码就可以了,只需要改变dt.date变成你需要的单位

import pandas as pd
import datetime as dt

df = pd.read_csv("test.csv")
date_col = "raw_timestamp" 
df[date_col] = pd.to_datetime(df[date_col]) 
groups = df.groupby(df[date_col].dt.date) 
for date, group in groups:
    file_name = f"./date/{date}.csv" 
    group.reset_index(drop=True).to_csv(file_name, index=False)

但是如果不是单位时间而是半小时之内的呢,就需要使用这样 

import pandas as pd
import datetime as dt

df = pd.read_csv("test.csv")
date_col = "raw_timestamp" 
df[date_col] = pd.to_datetime(df[date_col]) 
df ['half_hour'] = df [date_col].dt.floor(
    '30min')
for half_hour , group in final_df.groupby('half_hour'):
    file_name = f"./date/{half_hour}.csv" 
    group.drop('half_hour', axis=1).reset_index(drop=True).to_csv(file_name,index=False) 

这样就会向下取整,例如9:45,9:55,9:32就会都变成9:30,而10:01就会变成10:00,这样再根据这列来进行groupby,最后把这列删除就行了

如果想单独处理每一份切分的时间的话可以看我这篇blog

https://blog.csdn.net/Damien_J_Scott/article/details/134080474