Python 在列中合并月份名称和年份

Python 在列中合并月份名称和年份,python,pandas,calendar,Python,Pandas,Calendar,df 代码 Year Month Name Avg 2015 Jan 12 2015 Feb 13.4 2015 Mar 10 ................... 2019 Jan 11 2019 Feb 11 在数据框df中,groupby输出的平均值是月名和年。因此,月份名称和年份实际上是多级指数。我想创建第三列Month Name Year

df

代码

Year   Month Name    Avg
2015    Jan           12
2015    Feb           13.4
2015    Mar           10     
...................
2019   Jan           11
2019   Feb           11
在数据框df中,groupby输出的平均值是月名和年。因此,月份名称和年份实际上是多级指数。我想创建第三列Month Name Year,以便使用数据执行一些操作(创建绘图等)

我使用代码得到的输出如下所示:

df['Month Name-Year']= pd.to_datetime(df['Month Name'].astype(str)+df['Year'].astype(str),format='%b%Y')
等等

我想要的输出是月名年列中的2015年1月、2015年2月等,或者我想要2015-01、2015-02、2019-11、2019-12等(仅年和月,无天数)


请帮助

一种解决方案正在转换为日期时间,然后通过或更改格式:

最简单的解决方案是不转换为日期时间,只使用
-
连接,并将年份转换为字符串:

df['Month Name-Year']=pd.to_datetime(df['Month Name']+df['Year'].astype(str),format='%b%Y')

#for months periods
df['Month Name-Year1'] = df['Month Name-Year'].dt.to_period('m')
#for 2010-02 format
df['Month Name-Year2'] = df['Month Name-Year'].dt.strftime('%Y-%m')
…与转换为datetimes然后转换为自定义字符串相同:

#format 2010-Feb
df['Month Name-Year3'] = df['Year'].astype(str) + '-' + df['Month Name']

pd.to_datetime(df['Month Name'].astype(str)+df['Year'].astype(str),格式='%b%Y').dt.strftime('%Y-%b')
?这很有效,请将其键入回答,但注释答案更有用simple@ShailajaGuptaKapoor-注释类似于
df['Month Name-Year3']=df['Year']。astype(str)+'-'+df['Month Name']
#format 2010-Feb
df['Month Name-Year3'] = df['Year'].astype(str) + '-' + df['Month Name']
#format 2010-Feb
df['Month Name-Year31'] = df['Month Name-Year'].dt.strftime('%Y-%b')