Python 如何获得一天中的哪个学期属于使用熊猫。句号
我想知道一种简单的方法,可以在显示以下格式(“YYYY-SX”)的同时获得一天属于哪个学期;2018-01-01->(2018S1) 我有一个约会范围,在四分之一的时间里很容易做到:Python 如何获得一天中的哪个学期属于使用熊猫。句号,python,pandas,datetime,Python,Pandas,Datetime,我想知道一种简单的方法,可以在显示以下格式(“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
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')))
但是,鉴于这些文件,学期没有频率:
我不想使用任何特定的模块
关于如何以干净的方式做这件事,你有什么想法吗?你可以这样做
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
输出
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
你可以这样做
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
输出
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
你指的是学校学期期间的“学期”(即秋季=9月-12月,冬季=1月-4月,夏季=5月-8月)作为6个月。1月至6月;7月至12月你指的是学校学期期间的“学期”(即秋季=9月至12月,冬季=1月至4月,夏季=5月至8月),为期6个月。1月至6月;7月至12月然而,我并不真的想为此创建一个完整的数据框架,但基于你的想法,我可以这样做:
所有学期.append(str(day.year)+'S'+['1','2'][day.month>6])
理想情况下我也想使用pd.Period,尽管我并不想为此创建一个完整的数据框架,但根据你的想法,我可以做一些类似的事情:所有学期.append(str(day.year)+'s'+['1','2'][day.month>6])
理想情况下,我也想使用pd.Period,但不认为这是可能的