我尝试过滤一些时间序列数据,但熊猫没有任何运气。非常感谢我做错事情的提示。.首先,我尝试仅过滤2013年7月的月份,然后再次过滤数据以获取数据集样本的每小时平均值。
最终,我想要做的是使用CustomBusinessDay函数对工作日或周一,周二,周三等各个工作日进行过滤,如上所述。
我被绊倒在CustomBusinessDay的代码被注释掉的地方
import pandas as pd
import numpy as np
from pandas.tseries.offsets import CustomBusinessDay
time = pd.date_range('6/28/2013', periods=2000, freq='45min')
data = pd.Series(np.random.randint(100, size=2000), index=time)
print(data)
##weekmask = 'Mon Tue Wed Thu Fri'
df = data.truncate(before='7/1/2013', after='7/31/2013')
df = df.groupby(df.index.hour).mean()
print(df)
##df = CustomBusinessDay(weekmask=weekmask)
##df = pd.bdate_range(start=None, end=None, periods=None, freq='B')
##
##print(df)
最佳答案
最终,我想要做的就是按照所述过滤数据
除“工作日”或“周一的各个工作日”之外,
使用CustomBusinessDay函数的星期二,星期三等。
您是否考虑过使用DatetimeIndex.dayofweek
?
星期一= 0,星期日= 6的星期几
# Exclude Sundays
data.loc[data.index.dayofweek != 6]
# Weekends only
data.loc[data.index.dayofweek.isin([5, 6])]
# Weekdays only
data.loc[~data.index.dayofweek.isin([5, 6])]
另外,我认为
df = df.groupby(df.index.hour).mean()
的替代方法是:df.resample('H').mean()