我尝试过滤一些时间序列数据,但熊猫没有任何运气。非常感谢我做错事情的提示。.首先,我尝试仅过滤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()

10-08 12:43