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