pandas 如何在Python中将日期转换为季度?

qjp7pelc  于 2024-01-04  发布在  Python
关注(0)|答案(7)|浏览(182)

我想将我的日期列转换为该特定年份的季度指标,比如2018q12018q2等。
我的数据看起来像这样,我有股票回报每季度一次(不显示回报列在这里),和相应的日期,列季度是我想得到的(或类似的东西)

  1. data = [
  2. {'date': '3/22/18', 'quarter': 1},
  3. {'date': '3/22/18', 'quarter': 1},
  4. {'date': '6/22/18', 'quarter': 3},
  5. {'date': '6/22/18', 'quarter': 3},
  6. {'date': '9/22/18', 'quarter': 2},
  7. {'date': '9/22/18', 'quarter': 2}]
  8. df = pd.DataFrame(data, index=['s1', 's2','s1','s2','s1','s2'])
  9. date quarter
  10. s1 3/22/13 2013q1
  11. s2 3/24/13 2013q1
  12. s1 6/21/13 2013q2
  13. s2 6/26/13 2013q2
  14. s1 9/21/13 2013q3
  15. s2 9/28/13 2013q3

字符串

atmip9wb

atmip9wb1#

to_datetime

  1. df.date = pd.to_datetime(df.date)

字符串

PeriodIndex

  1. df['quarter'] = pd.PeriodIndex(df.date, freq='Q')
  2. date quarter
  3. s1 2018-03-22 2018Q1
  4. s2 2018-03-22 2018Q1
  5. s1 2018-06-22 2018Q2
  6. s2 2018-06-22 2018Q2
  7. s1 2018-09-22 2018Q3
  8. s2 2018-09-22 2018Q3

展开查看全部
hk8txs48

hk8txs482#

Series.dt.to_period

  1. import pandas as pd
  2. df['date'] = pd.to_datetime(df['date'])
  3. df['quarter'] = df['date'].dt.to_period('Q')
  4. date quarter
  5. s1 2018-03-22 2018Q1
  6. s2 2018-03-22 2018Q1
  7. s1 2018-06-22 2018Q2
  8. s2 2018-06-22 2018Q2
  9. s1 2018-09-22 2018Q3
  10. s2 2018-09-22 2018Q3

字符串

展开查看全部
hm2xizp9

hm2xizp93#

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

  1. df.date = pd.to_datetime(df.date)
  2. df["Quarter"] = df.date.dt.quarter

字符串

pkbketx9

pkbketx94#

Pandas有一个方法可以帮助你,它叫做pd.PeriodIndex(monthcolumn, freq= 'Q')。你可能需要先使用datetime libray将你的month列转换为数据类型。
Pandas还有一个名为'to_date'的方法,可以用来将列转换为日期列。
举例来说:

  1. df["year"] = pd.to_date(df["year"])

字符串

8ehkhllq

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 <= 5m // 3为1(Q2)
  • 对于6 <= m <= 8m // 3为2(第3季度)
  • 对于9 <= m <= 11m // 3为3(第4季度)

其中m = month - 1

6psbrbz9

6psbrbz96#

.date不起作用,因为它是 Dataframe 的函数。

  1. df_q8['Date'] = pd.to_datetime(df_q8['Date'])
  2. df_q8['quarter'] = pd.PeriodIndex(df_q8['Date'] ,freq='Q')

字符串

5lwkijsr

5lwkijsr7#

提取季度数的一种方法如下。

  1. In [56]: datetime.date.today()
  2. Out[56]: datetime.date(2021, 10, 20)
  3. In [57]: ts = pd.Timestamp(datetime.date.today()).quarter
  4. In [58]: ts
  5. Out[58]: 4

字符串

相关问题