将数据帧年和月合并到新对象Python中

将数据帧年和月合并到新对象Python中,python,python-3.x,pandas,date,dataframe,Python,Python 3.x,Pandas,Date,Dataframe,我有一个数据框架,其中的列仅为年和月,如: Year Month 2001 1 2001 2 2001 3 . . 2010 1 2010 2 . 使用pd.to_datetime(df[['year','month']])转换为pd.datetime需要几天的时间来匹配格式,因此我得到了错误: ValueError:要组装映射,至少需要指定[year,month,day],缺少[day] 我觉得我可以用重复的

我有一个数据框架,其中的列仅为年和月,如:

Year        Month
2001        1
2001        2
2001        3
.
.
2010        1
2010        2
.
使用
pd.to_datetime(df[['year','month']])转换为
pd.datetime
需要几天的时间来匹配格式,因此我得到了错误:

ValueError:要组装映射,至少需要指定[year,month,day],缺少[day]

我觉得我可以用重复的Day=1来填充一个新的列,但我想避免这样做,因为我只想创建一个年-月的时间序列


有没有办法将年-月映射到一个日期,以便正确地绘制图表?

没有“仅月份”之类的东西

pd.to_datetime
assign
使用参数“”中指定的列创建
df
的副本

如上所述:

说明:
df.assign(day=1)
是一种快速创建带有
'day'
列的临时数据框的方法,无需修改原始数据框


to_period
您可能需要使用
来设置时段

pd.to_datetime(df.assign(day=1)).dt.to_period('M')

0   2001-01
1   2001-02
2   2001-03
3   2010-01
4   2010-02
dtype: object

说明:
df.assign(day=1)
是一种快速创建带有
'day'
列的临时数据框的方法,无需修改原始数据框。我有与每年和每月相关的值。我知道在最初的问题中没有提到这一点,但有没有办法在数据帧中生成这些临时值?如果我保留原始索引,将其分割为单独的df,然后将它们添加回原始df.IIUC:
df.assign(MonthPeriod=df[['Year','Month']]].assign(day=1.dt.to_period('M'))
@hellotearth如果这不是你的意思,你需要澄清。我确信答案是肯定的,但我首先需要理解你的意思(-:
pd.to_datetime(df.assign(day=1)).dt.to_period('M')

0   2001-01
1   2001-02
2   2001-03
3   2010-01
4   2010-02
dtype: object