将时间戳转换为月份名称和年份作为数据框列名称

Converting timestamp into Month name and year as a Data frame column name

我正在尝试将数据框列名称(时间戳)转换为该月份和年份的书面缩写。

这是当前数据框的示例:

             2016-01-01  2016-02-01  2016-03-01  2016-04-01 
               00:00:00    00:00:00     00:00:00    00:00:00
Metric 1         Data          Data        Data         Data
Metric 2         Data          Data        Data         Data
Metric 3         Data          Data        Data         Data

这是我想要的输出:

               Jan 2016    Feb 2016    March 2016   April 2016
 Metric 1         Data       Data          Data         Data
 Metric 2         Data       Data          Data         Data    
 Metric 3         Data       Data          Data         Data

这是我用来构建数据框的代码:

start = '2016-01-01'
end = '2016-04-01'
data_dates = pd.date_range(start, end, freq='MS')
data_results = pd.DataFrame(data_dates)
data_results.columns = ['Date']

data_results = data_results['Date'].tolist()
df = pd.DataFrame(columns = data_results,  index = ['Metric 1', 'Metric 2', 'Metric 3'])

我尝试使用以下方法但没有结果。

data_results['Date'] = data_results['Date'].apply(lambda x: calendar.month_abbr[x])

假设列当前不是日期时间格式,

df.columns = pd.to_datetime(df.columns).strftime('%b %Y')

            Jan 2016    Feb 2016    Mar 2016    Apr 2016
Metric 1    NaN         NaN         NaN         NaN
Metric 2    NaN         NaN         NaN         NaN
Metric 3    NaN         NaN         NaN         NaN

编辑:我错过了用于生成 df 的代码,因为它们已经是日期时间,

df.columns = df.columns.strftime('%b %Y')

假设您的列名已经是时间戳。

df.rename(columns='{:%b %Y}'.format)

         Jan 2016 Feb 2016 Mar 2016 Apr 2016
Metric 1     Data     Data     Data     Data
Metric 2     Data     Data     Data     Data
Metric 3     Data     Data     Data     Data