我有一个数据框
df = {'Month': [1, 8], 'Year': [2015, 2020]}
df = pd.DataFrame(data = df)
df
想将其突变为新列。
所需的输出:
df = {'Month': [1, 8], 'Year': [2015, 2020], 'Quarter': ['Q12015', 'Q32020']}
df = pd.DataFrame(data = df)
df
还要感谢您发表评论,使用scikit-learn
处理此数据以进行建模的最佳方法是。目前,我正在考虑没有伪变量的字符串和类别变量,但是请感谢此处的任何提示。谢谢!
答案 0 :(得分:6)
基本思想是将日期时间转换为to_period
并转换为Q
作为季度(您仍然可以优化此功能)
df['Quarter'] = (pd.to_datetime(df[['Month','Year']].astype(str)
.agg('-'.join,1).radd("01-"),dayfirst=True).dt.to_period('Q'))
或者像@ Ben.T所说的那样,是一种更简单,更好的方法:
df['Quarter'] = pd.to_datetime(df[['Month','Year']].assign(day=1)).dt.to_period('Q')
print(df)
Month Year Quarter
0 1 2015 2015Q1
1 8 2020 2020Q3
答案 1 :(得分:2)
df['Quarter'] = df[['Year', 'Month']].astype(str).apply('-'.join,1)
df['Quarter'] = pd.PeriodIndex(pd.to_datetime(df['Quarter']), freq ='Q')