Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python datetime列表中每周天数/小时的频率_Python_Datetime - Fatal编程技术网

Python datetime列表中每周天数/小时的频率

Python datetime列表中每周天数/小时的频率,python,datetime,Python,Datetime,我想计算列表中的天数/小时数。 回答这个问题:“周六上午10点发生了多少事件?” 问题是:我现在如何影响每个日期的频率?所有可能的事件,甚至零案例 星期日(0)-->星期六(6) 00:00-->23:00 因此,我应该有(000,…623)所以首先我要定义一个函数,将日期时间转换为您所表示的数字: import time def datetime_to_num(timestr): # convert string to time object dt = time.strpti

我想计算列表中的天数/小时数。 回答这个问题:“周六上午10点发生了多少事件?”

问题是:我现在如何影响每个日期的频率?所有可能的事件,甚至零案例

星期日(0)-->星期六(6)

00:00-->23:00


因此,我应该有(000,…623)

所以首先我要定义一个函数,将日期时间转换为您所表示的数字:

import time

def datetime_to_num(timestr):
    # convert string to time object
    dt = time.strptime(timestr, "%Y-%m-%d %I:%M:%S %p")
    numday = (dt.tm_wday + 1) % 7 # get new day number
    numhour = dt.tm_hour # get hour number
    return int("{}{}".format(numday, numhour)) # return correct int
这将采用格式为
2014-05-10 12:00:00 PM
的字符串,并将其转换为从
0
623
的整数,如您所述。如果您想要字符串,那么您可以从
'000'
'623'
只需删除
return
语句中的
int()
,所有操作基本相同。然后你只需要以某种方式计算这些数字的频率。因此,通常一种简单的方法是使用
defaultdict

from collections import defaultdict

dtdict = defaultdict(int) # default count = 0

for dtstr in strlist: # for each string to process
    dtdict[datetime_to_num(dtstr)] += 1 # count it
然后,您将得到表格的频率记录:

# for example:
{   '0' : 1,
    '1' : 3,
  '523' : 7,
  '623' : 4,
}
当访问时,任何不存在的键的值均为
0

# for example:
{   '0' : 1,
    '1' : 3,
  '523' : 7,
  '623' : 4,
}