【发布时间】:2015-10-20 17:03:52
【问题描述】:
主要问题:我设置 df 索引这样做:df.index = pd.to_datetime(df.index, format='%m/%d/%Y %H:%M') 这给了我这个:
print df.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-07-28 09:42:08, ..., 2015-07-28 09:06:12]
Length: 15177, Freq: None, Timezone: None
我想要一个月份和年份的列表,以便使用它们进行绘图,如下所示:["Jan 2015", "Feb 2015", "Mar 2015", "Apr 2015", "May 2015", "June 2015", "Jul 2015", "Aug 2014", "Sep 2014", "Oct 2014", "Nov 2014", "Dec 2014"]
背景:我正在收集一年的数据并使用 Bokeh 制作图表。 y 轴是月份,x 轴是 CompanyName。我想将年份添加到月份中,尽管这会动态变化,所以我不想像几个月那样手动进行。
df = pd.read_csv('MYDATA.csv')
df['recvd_dttm'] = pd.to_datetime(df['recvd_dttm'])
#Only retrieve data before now (ignore typos that are future dates)
mask = df['recvd_dttm'] <= datetime.datetime.now()
df = df.loc[mask]
# get first and last datetime for final week of data
range_max = df['recvd_dttm'].max()
range_min = range_max - pd.DateOffset(years=1)
# take slice with final week of data
df = df[(df['recvd_dttm'] >= range_min) &
(df['recvd_dttm'] <= range_max)]
df = df.set_index('recvd_dttm')
df.index = pd.to_datetime(df.index, format='%m/%d/%Y %H:%M')
然后我有代码来提取所需的数据并将其格式化为用于绘图的数据透视表。接下来,我制作图:
MonthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
p = figure(title="Customer Calls for blank in Last Year",
x_range=Companies, y_range=MonthNames,
x_axis_location="above", plot_width=1200, plot_height=900,
toolbar_location="left", tools=TOOLS)
我想要["Jan 2015", "Feb 2015", "Mar 2015", "Apr 2015", "May 2015", "June 2015", "Jul 2015", "Aug 2014", "Sep 2014", "Oct 2014", "Nov 2014", "Dec 2014"]
我尝试使用 + '%Y' 连接到 y_range 但我得到了TypeError: can only concatenate list (not "str") to list
我很确定解决方案是获取 df.index 并将其放入列表中,然后删除重复并将其添加到 y_range 中。
我试着做date_list = [set(df.index.year)],但这显然给了[{2014, 2015}],这没有帮助。
我不知道该怎么做,有人有什么建议吗?
【问题讨论】:
标签: python pandas indexing dataframe bokeh