如何在一周中的每一天按小时分组?
How to group by hourly for each day of the week?
我有一个很长的 table,其中包含日期时间和值列。这是数据框的一个简短示例。我目前所做的是按小时、工作日、月份分组,我得到所有时间的月份或小时的平均值。
这是每小时值:hourly_value = df.groupby([lambda idx: idx.hour]).agg([np.mean, np.std])
datetime value
0 2018-01-01 00:30:00+01:00 0.22
1 2018-01-01 00:35:00+01:00 0.31
2 2018-01-02 00:30:00+01:00 1.15
3 2018-01-02 00:35:00+01:00 1.80
4 2018-01-03 00:30:00+01:00 2.60
5 2018-01-03 00:35:00+01:00 2.30
6 2018-01-04 00:30:00+01:00 1.90
7 2018-01-04 00:35:00+01:00 2.10
8 2018-01-05 00:30:00+01:00 2.90
现在我想要的是每一天的小时值。星期一每小时,星期二每小时,星期三每小时,...
有人可以帮我解决这个问题吗?:)
你可以试试:
df.groupby(lambda idx: (idx[1].hour, idx[1].strftime("%A"))).agg([np.mean, np.std])
输出:
value
mean std
(0, Friday) 2.900 NaN
(0, Monday) 0.265 0.063640
(0, Thursday) 2.000 0.141421
(0, Tuesday) 1.475 0.459619
(0, Wednesday) 2.450 0.212132
索引是(小时,工作日)对。
但请注意e.x。不同周的星期一被分成一组。
另一种计算方式:
df.resample('1D', on='datetime').agg([np.mean, np.std])
输出:
value
mean std
datetime
2017-12-31 0.265 0.063640
2018-01-01 1.475 0.459619
2018-01-02 2.450 0.212132
2018-01-03 2.000 0.141421
2018-01-04 2.900 NaN
我有一个很长的 table,其中包含日期时间和值列。这是数据框的一个简短示例。我目前所做的是按小时、工作日、月份分组,我得到所有时间的月份或小时的平均值。
这是每小时值:hourly_value = df.groupby([lambda idx: idx.hour]).agg([np.mean, np.std])
datetime value
0 2018-01-01 00:30:00+01:00 0.22
1 2018-01-01 00:35:00+01:00 0.31
2 2018-01-02 00:30:00+01:00 1.15
3 2018-01-02 00:35:00+01:00 1.80
4 2018-01-03 00:30:00+01:00 2.60
5 2018-01-03 00:35:00+01:00 2.30
6 2018-01-04 00:30:00+01:00 1.90
7 2018-01-04 00:35:00+01:00 2.10
8 2018-01-05 00:30:00+01:00 2.90
现在我想要的是每一天的小时值。星期一每小时,星期二每小时,星期三每小时,...
有人可以帮我解决这个问题吗?:)
你可以试试:
df.groupby(lambda idx: (idx[1].hour, idx[1].strftime("%A"))).agg([np.mean, np.std])
输出:
value
mean std
(0, Friday) 2.900 NaN
(0, Monday) 0.265 0.063640
(0, Thursday) 2.000 0.141421
(0, Tuesday) 1.475 0.459619
(0, Wednesday) 2.450 0.212132
索引是(小时,工作日)对。
但请注意e.x。不同周的星期一被分成一组。
另一种计算方式:
df.resample('1D', on='datetime').agg([np.mean, np.std])
输出:
value
mean std
datetime
2017-12-31 0.265 0.063640
2018-01-01 1.475 0.459619
2018-01-02 2.450 0.212132
2018-01-03 2.000 0.141421
2018-01-04 2.900 NaN