将日期转换为季度

Nic*_*lia 5 python date pandas

我想将我的日期列转换为特定年份的季度指标,比如2018q1或2018q2等.

我的数据看起来像这样,我每季度有一次股票回报(这里没有显示返回列),而且相应的日期,列季度是我想得到的(或类似的东西)

data = [{'date': '3/22/18', 'quarter': 1},{'date': '3/22/18', 'quarter': 1}, 
{'date': '6/22/18', 'quarter': 3},{'date': '6/22/18', 'quarter': 3},
{'date': '9/22/18', 'quarter': 2},{'date': '9/22/18', 'quarter': 2}]
df = pd.DataFrame(data, index=['s1', 's2','s1','s2','s1','s2'])

        date  quarter
 s1  3/22/13       2013q1
 s2  3/24/13       2013q1
 s1  6/21/13       2013q2
 s2  6/26/13       2013q2
 s1  9/21/13       2013q3
 s2  9/28/13       2013q3
Run Code Online (Sandbox Code Playgroud)

ALo*_*llz 24

Series.dt.to_period

import pandas as pd
df['date'] = pd.to_datetime(df['date'])

df['quarter'] = df['date'].dt.to_period('Q')

         date quarter
s1 2018-03-22  2018Q1
s2 2018-03-22  2018Q1
s1 2018-06-22  2018Q2
s2 2018-06-22  2018Q2
s1 2018-09-22  2018Q3
s2 2018-09-22  2018Q3
Run Code Online (Sandbox Code Playgroud)


小智 11

datecolumn.dt.quarter功能会有帮助。

df.date = pd.to_datetime(df.date)
df["Quarter"] = df.date.dt.quarter
Run Code Online (Sandbox Code Playgroud)


use*_*203 9

to_datetime:

df.date = pd.to_datetime(df.date)
Run Code Online (Sandbox Code Playgroud)

PeriodIndex

df['quarter'] = pd.PeriodIndex(df.date, freq='Q')

         date quarter
s1 2018-03-22  2018Q1
s2 2018-03-22  2018Q1
s1 2018-06-22  2018Q2
s2 2018-06-22  2018Q2
s1 2018-09-22  2018Q3
s2 2018-09-22  2018Q3
Run Code Online (Sandbox Code Playgroud)


小智 5

Pandas 有一个方法可以帮助你,它叫做pd.PeriodIndex(monthcolumn, freq= 'Q'). 您可能需要首先使用日期时间库将月份列转换为数据类型。

Pandas 还有一个名为 的方法'to_date',您可以使用该方法将列转换为日期列。

例如:

df["year"] = pd.to_date(df["year"])
Run Code Online (Sandbox Code Playgroud)