如何使用熊猫每天获得哪个学期。时期

问题描述 投票:0回答:1

我想知道一种简单的方法,以以下格式('YYYY-SX')显示一天中的哪个学期; 2018-01-01->(2018S1)。

我有一个日期范围,很容易在四分之一时间内完成:

import pandas as pd

import datetime

start = datetime.datetime(2018, 1, 1)

end = datetime.datetime(2020, 1, 1)

all_days = pd.date_range(start, end, freq='D')

all_quarters = []

for day in all_days:
    all_quarters.append(str(pd.Period(day, freq='Q')))

但是给定文档,每学期没有班次:

https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.Period.html

https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases

我不想一定使用任何特定的模块。

关于如何干净地做任何想法?

python pandas datetime
1个回答
0
投票

您可以做这样的事情。

df['sem']= df.date.dt.year.astype(str) + 'S'+ np.where(df.date.dt.quarter.gt(2),2,1).astype(str)

注意:date列必须作为datetime对象

输入

date
0   2019-09-30
1   2019-10-31
2   2019-11-30
3   2019-12-31
4   2020-01-31
5   2020-02-29
6   2020-03-31
7   2020-04-30
8   2020-05-31
9   2020-06-30

输出

          date  sem
0   2019-09-30  2019S2
1   2019-10-31  2019S2
2   2019-11-30  2019S2
3   2019-12-31  2019S2
4   2020-01-31  2020S1
5   2020-02-29  2020S1
6   2020-03-31  2020S1
7   2020-04-30  2020S1
8   2020-05-31  2020S1
9   2020-06-30  2020S1
© www.soinside.com 2019 - 2024. All rights reserved.