Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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 如何获得一天中的哪个学期属于使用熊猫。句号_Python_Pandas_Datetime - Fatal编程技术网

Python 如何获得一天中的哪个学期属于使用熊猫。句号

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

我想知道一种简单的方法,可以在显示以下格式(“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')))
但是,鉴于这些文件,学期没有频率:

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


关于如何以干净的方式做这件事,你有什么想法吗?

你可以这样做

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,但不认为这是可能的