Python 熊猫约会时间:每小时和每周一

Python 熊猫约会时间:每小时和每周一,python,datetime,pandas,hour,weekday,Python,Datetime,Pandas,Hour,Weekday,我不熟悉熊猫/蟒蛇: 我有一个由datetime对象索引的dataframe(events.number) 我试图在每周一(或其他特定的工作日)每小时提取一次事件计数。我写道: hour_tally_monday = events.number.groupby(lambda x: (x.hour & x.weekday==0) ).count() 但这并不正确 我可以删除“&x.weekday==1”,它可以工作,但可能会使用帧中的所有天。周一的平均语法是什么 我认为您首先需要使

我不熟悉熊猫/蟒蛇: 我有一个由
datetime
对象索引的
dataframe
(events.number)

我试图在每周一(或其他特定的工作日)每小时提取一次事件计数。我写道:

hour_tally_monday = events.number.groupby(lambda x: (x.hour & x.weekday==0) ).count()   
但这并不正确


我可以删除“
&x.weekday==1
”,它可以工作,但可能会使用帧中的所有天。周一的平均语法是什么

我认为您首先需要使用筛选数据帧,然后使用:

在版本
0.18.1
中,您可以使用新方法:


尝试使用逗号“,”而不是“&”文档总是很有用的:
import pandas as pd

start = pd.to_datetime('2016-02-01')
end = pd.to_datetime('2016-02-25')
rng = pd.date_range(start, end, freq='12H')

events = pd.DataFrame({'number': [1] * 20 + [2] * 15 + [3] * 14}, index=rng)
print events
                     number
2016-02-01 00:00:00       1
2016-02-01 12:00:00       1
2016-02-02 00:00:00       1
2016-02-02 12:00:00       1
2016-02-03 00:00:00       1
2016-02-03 12:00:00       1
2016-02-04 00:00:00       1
2016-02-04 12:00:00       1
2016-02-05 00:00:00       1
2016-02-05 12:00:00       1
2016-02-06 00:00:00       1
2016-02-06 12:00:00       1
2016-02-07 00:00:00       1
...
...
filtered = events[events.index.weekday == 0]
print filtered
                     number
2016-02-01 00:00:00       1
2016-02-01 12:00:00       1
2016-02-08 00:00:00       1
2016-02-08 12:00:00       1
2016-02-15 00:00:00       2
2016-02-15 12:00:00       2
2016-02-22 00:00:00       3
2016-02-22 12:00:00       3
filtered = events[events.index.weekday_name == 'Monday']
print filtered
                     number
2016-02-01 00:00:00       1
2016-02-01 12:00:00       1
2016-02-08 00:00:00       1
2016-02-08 12:00:00       1
2016-02-15 00:00:00       2
2016-02-15 12:00:00       2
2016-02-22 00:00:00       3
2016-02-22 12:00:00       3

print filtered.groupby(filtered.index.hour).size()
0     4
12    4
dtype: int64