pandas 中给定日期的季度天数

Rat*_*rit 5 python pandas

我创建了一个日期数据框,如下所示:

import pandas as pd

timespan = 366
df = pd.DataFrame({'Date':pd.date_range(pd.datetime.today(), periods=timespan).tolist()})
Run Code Online (Sandbox Code Playgroud)

我正在努力确定季度中的天数。例如

date          expected_value
2017-01-01       1           # First day in Q1
2017-01-02       2           # Second day in Q1
2017-02-01      32           # 32nd day in Q1
2017-04-01       1           # First day in Q2
Run Code Online (Sandbox Code Playgroud)

我可以听听你的建议吗?先感谢您。

Flo*_*oor 1

一种方法是根据日期和季度累积计数创建一个新的 df,然后将值映射到真实的 df,即

timespan = 5000
ndf = pd.DataFrame({'Date':pd.date_range('2015-01-01', periods=timespan).tolist()})
ndf['q'] = ndf['Date'].dt.to_period('Q')
ndf['new'] = ndf.groupby('q').cumcount()+1
maps = dict(zip(ndf['Date'].dt.date, ndf['new'].values.tolist()))
Run Code Online (Sandbox Code Playgroud)

映射值

df['expected'] = df.Date.dt.date.map(maps)
Run Code Online (Sandbox Code Playgroud)

输出:

                       预计日期
0 2017-09-12 09:42:14.324492 74
1 2017-09-13 09:42:14.324492 75
2 2017-09-14 09:42:14.324492 76
3 2017-09-15 09:42:14.324492 77
4 2017-09-16 09:42:14.324492 78
。
。
143 2018-02-02 09:42:14.324492 33
。
。
201 2018-04-01 09:42:14.324492 1

希望能帮助到你。