0

问题 1 作为分析师,您必须展示客户的季度业绩结果。您提供的数据是每天的数据。要完成此任务,您需要从给定日期提取季度。例如:如果日期介于 2020 年 1 月 1 日 - 2020 年 3 月 31 日之间,则需要提取对应的季度为 '2020-Q1'

如果日期介于 2020 年 4 月 1 日至 2020 年 6 月 30 日之间,则提取的季度将为“2020-Q2”

如果日期介于 2020 年 7 月 1 日至 2020 年 9 月 30 日之间,则提取的季度将为“2020-Q3”

如果日期介于 2020 年 10 月 1 日至 2020 年 12 月 31 日之间,则提取的季度将为“2020-Q4”

4

3 回答 3

0

用每个季度的“限制”定义一个字典。我会做这样的事情:

from datetime import date

quarters = {
            '2020-Q1': ((2020, 1, 1), (2020, 3, 31)),
            '2020-Q2': ((2020, 4, 1), (2020, 6, 30)),
            '2020-Q3': ((2020, 7, 1), (2020, 9, 30)),
            '2020-Q4': ((2020, 10, 1), (2020, 12, 31))
            }

def get_quarter(my_date):
    try:
        if not isinstance(my_date, date): #Check if the input is a date
            raise TypeError
        for quarter, limits in quarters.items():
            if date(*limits[0]) <= my_date <= date(*limits[1]): 
                return quarter 
    except TypeError:
        ... # Handle exception

def main():

    my_date = date(2020, 4, 15) #Define a valid input
    print(get_quarter(my_date)) #Run the function

if __name__ == '__main__':
    main()

这个例子打印出来:

'2020-Q2'
于 2021-11-24T13:07:11.870 回答
0

您好,欢迎来到 stackoverflow。我相信这个类似问题的答案肯定会对你有所帮助。

这是上述答案的快速摘要。基本上,您只需要检查给定日期的月份并将其转换为数字(1 到 12)。如果从中减去 1(因此它从一月的 0 到十二月的 11)并使用整数除法将该数字除以 3,您将获得格式为 0 到 3 的季度信息。如果您再次添加 1你得到你正在寻找的正确季度。

或者使用我上面链接的答案中的python代码:

def printQuarter(month):
    print((month-1)//3 + 1)

printQuarter(1)  # january, result: 1
printQuarter(4)  # april, result: 2
printQuarter(12) # december, result: 4

或者,您当然可以使用 if-else 语句来解决此问题,正如您在问题中使用 if-statement 标签所建议的那样。这当然有效,但远没有那么优雅。如果由于某种原因你仍然想这样做,你可以这样做:

if month <= 3:
    print("Q1")
elif month <= 6:
    print("Q2")
elif month <= 9:
    print("Q3")
else:
    print("Q4")
于 2021-11-24T12:08:16.823 回答
0

前段时间我为你准备了一个答案!唉! 所以下降了:-)。您可以使用一种方法来使用日期本身的月份来查找季度。见下文。

from datetime import datetime

_date_str = "1 April, 2020"


def get_quarter_str(date_str):
    known_date = datetime.strptime(date_str, "%d %B, %Y")
    quarter = ((known_date.month - 1) // 3) + 1
    return f"{known_date.year} - Q{quarter}"


print(get_quarter_str(_date_str))
于 2021-11-25T05:47:03.367 回答