我有下面的函数,读取一个csv文件,并将数据分为几天、几周和几个月。在
我的问题是,每天都是24小时从正常的12小时上午。但是,数据应该从下午4点到下午4点(进入第二天)进行分块。在
此外星期一使数据从星期一开始的星期一开始。我想默认为星期天下午4点到星期五下午4点。我可以通过索引天真地做这个,我想知道是否有一个更优雅的解决方案。在
目标:我想列出一个数据帧的列表,这些数据帧将分块这5分钟的数据(请参见测向头())以天、周、月为单位。几天来,我需要一天从下午4点开始,一直持续到第二天下午4点。几周来,我希望这一周从周日开始,但问题是,由于数据从周一开始,它希望将周与周一分开。在
def read_in_files(file_names):
"""
1. Read the csv files to memory into a pandas dataframe with pd.read_csv
2. separate the df into year, month, and date objects
3. It also chunks the data by single day
"""
import os
import pandas as pd
file1 = pd.read_csv(file_names, parse_dates=[['Date', 'Time']])
df = pd.DataFrame(file1)
# Week is defined as sunday 4pm to Friday 4pm --not working correctly
# this is a timestamp obj
df['year'], df['month'] = df['Date_Time'].dt.year, df['Date_time'].dt.month
df['date'] = df['Date_Time'].dt.day
df['week'] = df['Date_Time'].dt.week
"""
these three lines below chunk the data by dates
"""
df_single_day = []
for group in df.groupby(df.Date_Time, sort=False):
df_single_day.append(group[1])
df_single_week = []
for group in df.groupby(['week', 'year'], sort=False):
df_single_week.append(group[1])
df_single_month = []
for group in df.groupby(['month', 'year'], sort=False):
df_single_month.append(group[1])
return df df_single_day, df_single_week, df_single_month
示例输出
单日[0].tail(5)
出局[11]:
^{pr2}$单日[1].头(5)
出局[14]:
Unnamed: 0 Symbol Date_Time Open High Low Close \
95 96 ABCDEF 2008-05-07 00:00 0.9478 0.9483 0.9475 0.9481
96 97 ABCDEF 2008-05-07 00:05 0.9481 0.9484 0.9479 0.9484
97 98 ABCDEF 2008-05-07 00:10 0.9482 0.9485 0.9480 0.9482
98 99 ABCDEF 2008-05-07 00:15 0.9482 0.9485 0.9478 0.9483
99 100 ABCDEF 2008-05-07 00:20 0.9483 0.9485 0.9480 0.9484
year month date week
95 2008 5 7 19
96 2008 5 7 19
97 2008 5 7 19
98 2008 5 7 19
99 2008 5 7 19
函数从00:00开始为每个列表分块数据,我希望它从一天的16:00开始到第二天的15:55
上面的代码产生正确的答案。我有一个小问题(但不重要)在周末16:00的组是单独的,所以我用if语句删除它们。在
还在想怎么做星期一如果我的数据是从周一开始的星期一周一到周一。。。在
相关问题 更多 >
编程相关推荐