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. 现在我正在考虑没有虚拟变量的字符串和分类变量,但感谢这里的任何提示。谢谢!
其基本思想是将转换为datetime和转换to_period与Q为四分之一(你仍然可以优化这个我觉得)
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)