将月份名称和年份组合在一列中 pandas python
Combine month name and year in a column pandas python
df
Year Month Name Avg
2015 Jan 12
2015 Feb 13.4
2015 Mar 10
...................
2019 Jan 11
2019 Feb 11
代码
df['Month Name-Year']= pd.to_datetime(df['Month Name'].astype(str)+df['Year'].astype(str),format='%b%Y')
在数据框 df 中,groupby 输出平均值在关键字月份名称和年份上。所以月份名称和年份实际上是多级索引。我想创建第三列 Month Name Year 以便我可以使用数据进行一些操作(创建绘图等)。
我使用代码得到的输出如下:
Year Month Name Avg Month Name-Year
2015 Jan 12 2015-01-01
2015 Feb 13.4 2015-02-01
2015 Mar 10 2015-03-01
...................
2019 Nov 11 2019-11-01
2019 Dec 11 2019-12-01
等等。
我想要的输出是 Month Name-Year 列中的 2015-Jan、2015-Feb 等...或者我想要 2015-01、2015-02...2019-11、2019-12 等(仅年和月,没有天)。
请帮忙
一种解决方案是转换为日期时间,然后按 Series.dt.to_period
or Series.dt.strftime
:
更改格式
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')
最简单的解决方案是不转换为日期时间,只加入 -
并将年份转换为字符串:
#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')
df
Year Month Name Avg
2015 Jan 12
2015 Feb 13.4
2015 Mar 10
...................
2019 Jan 11
2019 Feb 11
代码
df['Month Name-Year']= pd.to_datetime(df['Month Name'].astype(str)+df['Year'].astype(str),format='%b%Y')
在数据框 df 中,groupby 输出平均值在关键字月份名称和年份上。所以月份名称和年份实际上是多级索引。我想创建第三列 Month Name Year 以便我可以使用数据进行一些操作(创建绘图等)。
我使用代码得到的输出如下:
Year Month Name Avg Month Name-Year
2015 Jan 12 2015-01-01
2015 Feb 13.4 2015-02-01
2015 Mar 10 2015-03-01
...................
2019 Nov 11 2019-11-01
2019 Dec 11 2019-12-01
等等。
我想要的输出是 Month Name-Year 列中的 2015-Jan、2015-Feb 等...或者我想要 2015-01、2015-02...2019-11、2019-12 等(仅年和月,没有天)。
请帮忙
一种解决方案是转换为日期时间,然后按 Series.dt.to_period
or Series.dt.strftime
:
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')
最简单的解决方案是不转换为日期时间,只加入 -
并将年份转换为字符串:
#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')