Python 在列中合并月份名称和年份
df 代码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
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')