有没有一种简单的方法可以将python中的datetime列转换为YYYYQx
格式,例如2018Q1
,2018Q2
等?
我已尝试过这一行,但没有返回任何内容
zip([list(DF_A['period'].dt.year), ['Q']*length_of_DF, list(DF_A['period'].dt.quarter)])
答案 0 :(得分:4)
您可以按to_period
将日期时间转换为季度时段,并使用strftime
将自定义字符串转换为季度时间段:
d = ['2015-01-01','2016-05-01','2015-07-01','2015-10-01','2015-04-01']
df = pd.DataFrame({ 'Date': pd.to_datetime(d)})
print (df)
Date
0 2015-01-01
1 2016-05-01
2 2015-07-01
3 2015-10-01
4 2015-04-01
print (df['Date'].dt.to_period('Q'))
0 2015Q1
1 2016Q2
2 2015Q3
3 2015Q4
4 2015Q2
Name: Date, dtype: object
print (df['Date'].dt.to_period('Q').dt.strftime('%Yq%q'))
0 2015q1
1 2016q2
2 2015q3
3 2015q4
4 2015q2
Name: Date, dtype: object
答案 1 :(得分:3)
这是一种方式。
df = pd.DataFrame({'A': ['2017-01-01', '2017-04-01', '2017-12-01']})
df['A'] = pd.to_datetime(df['A'])
df['B'] = df['A'].dt.year.astype(str) + 'Q' + df['A'].dt.quarter.astype(str)
结果:
A B
0 2017-01-01 2017Q1
1 2017-04-01 2017Q2
2 2017-12-01 2017Q4