我有一个这样的数据框
| 日期时间|级别|
| - ------|- ------|
| 2017年8月8日23时55分01秒|二百三十九点零万|
| 2017年8月8日23时50分01秒|二百四十二点零|
| 2017年8月8日23时45分01秒|二百四十六点零|
| 2017年8月8日23时40分01秒|二百五十元|
| 2017年8月8日23时35分01秒|二百五十四元|
| ...|...|
| 2017年7月26日00:23:57|七十二岁|
| 2017年7月26日00时18分57秒|六十七岁|
| 2017年7月26日00:13:57|六十四岁|
| 2017年7月26日00:08:57|六十四岁|
| 2017年7月26日00:03:57|六十五岁|
我想计算每天的平均水平,包括清醒时间和夜间时间
| 日期|时间|平均水平|
| - ------|- ------|- ------|
| 2017年8月8日|00时00分至06时00分|一百七十八|
| 2017年8月8日|06:00:01 - 23:59:99|一百九十|
| 2017年9月8日|00时00分至06时00分|一百七十四|
| 2017年9月8日|06:00:01 - 23:59:99|二百|
我已经尝试过拆分为单独的表并使用for循环,但是这会占用太多内存和时间
3条答案
按热度按时间wmvff8tz1#
您可以执行以下操作:
基本上,您可以按每晚和每天的时间对条目进行分组:
这将导致(我假设您打印的预期结果是针对整个 Dataframe 的):
tkclm6bt2#
您可以使用
np.where
来区分清醒时间和夜间时间创建示例数据
创造一个醒着和过夜的面具
按
Date_Time
和Period
列分组并计算平均值Level
daupos2t3#
通过使用Pandas
freq
选项,可以计算相等时间部分的平均值、总和等,即freq='H'
用于每小时计算,freq='12H'
用于12小时计算,freq='D'
用于每日计算,freq='BH'
用于营业时间计算。示例如下:由于您要求的计算期间不是平均分割的,因此需要执行一些自定义计算