gpt4 book ai didi

python - Python中给定月份的季度的第一个月

转载 作者:太空狗 更新时间:2023-10-29 17:35:25 26 4
gpt4 key购买 nike

给定一个数字形式的月份(例如,2 表示二月),您如何找到相应季度的第一个月(例如,1 表示一月)?

我通读了 datetime 模块文档和它们的 datetime 函数的 Pandas 文档,它们应该是相关的,但我找不到解决这个问题的函数。

从本质上讲,我想了解的是如何生成如下所示的函数,给定月份 x,输出对应于 x 的季度。

>> first_month_quarter(5)
4

最佳答案

它不是很漂亮,但如果速度很重要,一个简单的列表查找就可以解决 math:

def quarter(month, quarters=[None, 1, 1, 1, 4, 4, 4,
7, 7, 7, 10, 10, 10]):
"""Return the first month of the quarter for a given month."""
return quarters[month]

A timeit比较表明,这大约是 TigerhawkT3 数学方法的两倍。


测试脚本:

import math

def quarter(month, quarters=[None, 1, 1, 1, 4, 4, 4,
7, 7, 7, 10, 10, 10]):
"""Return the first month of the quarter for a given month."""
return quarters[month]

def firstMonthInQuarter1(month):
return (month - 1) // 3 * 3 + 1

def firstMonthInQuarter2(month):
return month - (month - 1) % 3

def first_month_quarter(month):
return int(math.ceil(month / 3.)) * 3 - 2

if __name__ == '__main__':
from timeit import timeit
methods = ['quarter', 'firstMonthInQuarter1', 'firstMonthInQuarter2',
'first_month_quarter']
setup = 'from __main__ import {}'.format(','.join(methods))
results = {method: timeit('[{}(x) for x in range(1, 13)]'.format(method),
setup=setup)
for method in methods}
for method in methods:
print '{}:\t{}'.format(method, results[method])

结果:

quarter:    3.01457574242
firstMonthInQuarter1: 4.51578357209
firstMonthInQuarter2: 4.01768559763
first_month_quarter: 8.08281871176

关于python - Python中给定月份的季度的第一个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29375785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com