我想将我的日期列转换为该特定年份的季度指标,比如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
字符串
7条答案
按热度按时间atmip9wb1#
to_datetime
:字符串
PeriodIndex
型
hk8txs482#
Series.dt.to_period
字符串
hm2xizp93#
datecolumn.dt.quarter
功能会有所帮助。字符串
pkbketx94#
Pandas有一个方法可以帮助你,它叫做
pd.PeriodIndex(monthcolumn, freq= 'Q')
。你可能需要先使用datetime libray将你的month列转换为数据类型。Pandas还有一个名为
'to_date'
的方法,可以用来将列转换为日期列。举例来说:
字符串
8ehkhllq5#
只需提取日期字符串的月份部分。季度可以通过
(month - 1) // 3 + 1
简单地获得。因为你的数据是一个字典,其
'date'
键是(\d{1:2})/(\d{1:2})/(\d\d)
形式的str
,所以你可以得到日期的“月”部分(第一组),将其转换为int,然后使用(month - 1) // 3 + 1
得到季度。提取日期字符串的月份部分可以使用正则表达式或简单的字符串切片来完成。因此,季度范围从1到4,并由以下公式确定:
m // 3
对于0 <= m <= 2
为0(Q1)3 <= m <= 5
,m // 3
为1(Q2)6 <= m <= 8
,m // 3
为2(第3季度)9 <= m <= 11
,m // 3
为3(第4季度)其中
m = month - 1
6psbrbz96#
.date不起作用,因为它是 Dataframe 的函数。
字符串
5lwkijsr7#
提取季度数的一种方法如下。
字符串