将月份和年份的列一起变异为 Python 中的季度和年份列

Ole*_*siy 3 python numpy pandas

我有一个数据框

df = {'Month': [1, 8], 'Year': [2015, 2020]}
df = pd.DataFrame(data = df)
df
Run Code Online (Sandbox Code Playgroud)

想将它变异为一个新列。

期望的输出:

df = {'Month': [1, 8], 'Year': [2015, 2020], 'Quarter': ['Q12015', 'Q32020']}
df = pd.DataFrame(data = df)
df
Run Code Online (Sandbox Code Playgroud)

也将不胜感激评论什么是处理这些数据以使用scikit-learn. 现在我正在考虑没有虚拟变量的字符串和分类变量,但感谢这里的任何提示。谢谢!

ank*_*_91 6

其基本思想是将转换为datetime和转换to_periodQ为四分之一(你仍然可以优化这个我觉得

df['Quarter'] = (pd.to_datetime(df[['Month','Year']].astype(str)
                   .agg('-'.join,1).radd("01-"),dayfirst=True).dt.to_period('Q'))
Run Code Online (Sandbox Code Playgroud)

或者@Ben.T评论的更简单更好的方法:

df['Quarter'] = pd.to_datetime(df[['Month','Year']].assign(day=1)).dt.to_period('Q')
print(df)
Run Code Online (Sandbox Code Playgroud)
   Month  Year Quarter
0      1  2015  2015Q1
1      8  2020  2020Q3
Run Code Online (Sandbox Code Playgroud)