我有一列代表季度的字符串(格式“%Y%q”),我想将其转换为PeriodIndex。如何做到这一点?什么都不起作用,找不到接受格式字符串并处理季度的 strptime 函数。
out[0]
0 200001
1 200002
2 200003
3 200004
4 200101
...
94 202303
95 202304
96 202401
97 202402
98 202403
Name: 0, Length: 99, dtype: int64
想要:
PeriodIndex(['2000Q1',... '2024Q3'], dtype='period[Q-DEC]')
pd.PeriodIndex.from_fields
。
对于整数(你说你有字符串,但你的样本有
dtype: int64
),对年份使用下限除法(//
),对季度使用模数(%
):
import pandas as pd
data = [202401, 202402, 202403, 202404]
df = pd.DataFrame({'Dates': data})
df['Quarters'] = pd.PeriodIndex.from_fields(year=df['Dates'] // 100,
quarter=df['Dates'] % 10,
freq='Q')
输出:
df['Quarters']
0 2024Q1
1 2024Q2
2 2024Q3
3 2024Q4
Name: Quarters, dtype: period[Q-DEC]
Series.astype
转换为整数并执行与上面相同的操作,或者通过 Series.str
进行切片然后再转换:
df = pd.DataFrame({'Dates': data}, dtype=str)
df['Quarters'] = pd.PeriodIndex.from_fields(year=df['Dates'].str[:4].astype(int),
quarter=df['Dates'].str[5:].astype(int),
freq='Q')