我一直在尝试将 2002Q3 之类的内容转换为 2002-09-01,但如果我使用以下内容,它会将 2002Q3 转换为 2002-07-01:
pd.PeriodIndex(['2002Q3], freq='Q').to_timestamp()
我怎样才能让它与 2002-06-01 匹配呢?例如,我希望 2002Q1 对应 2002-03-01,2002Q2 对应 2002-06-01,2002Q3 对应 2002-09-01,2002Q4 对应 2002-12-01。谢谢!
我一直在尝试将 2002Q3 之类的内容转换为 2002-09-01,但如果我使用以下内容,它会将 2002Q3 转换为 2002-07-01:
pd.PeriodIndex(['2002Q3], freq='Q').to_timestamp()
我怎样才能让它与 2002-06-01 匹配呢?例如,我希望 2002Q1 对应 2002-03-01,2002Q2 对应 2002-06-01,2002Q3 对应 2002-09-01,2002Q4 对应 2002-12-01。谢谢!
由于您的最终目标是公正的datetime64,请使用replacewith to_datetime。
给定一系列YYYYQQ字符串:
qtr = pd.Series([f'{y}Q{q}' for y in range(2000, 2010) for q in (1, 2, 3, 4)])
# 0 2000Q1
# 1 2000Q2
# 2 2000Q3
# 3 2000Q4
# 4 2001Q1
# ...
# 38 2009Q3
# 39 2009Q4
# dtype: object
replaceQQ您想要的部分-mm-dd并转换to_datetime:
mapping = {
'Q1': '-03-01',
'Q2': '-06-01',
'Q3': '-09-01',
'Q4': '-12-01',
}
pd.to_datetime(qtr.replace(mapping, regex=True))
# 0 2000-03-01
# 1 2000-06-01
# 2 2000-09-01
# 3 2000-12-01
# 4 2001-03-01
# ... ...
# 38 2009-09-01
# 39 2009-12-01
# dtype: datetime64[ns]