我正在尝试将数据框架列名称(Timestamp)转换为该月份和年份的书面缩写。
以下是当前数据框的示例:
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])
答案 0 :(得分:2)
假设列当前不是日期时间格式,
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')
答案 1 :(得分:2)
假设您的列名已经是时间戳。
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