我正在读取一个sql查询并将其用作数据框列。
query = "SELECT count(*) as numRecords, YEARWEEK(date) as weekNum FROM events GROUP BY YEARWEEK(date)"
df = pd.read_sql(query, connection)
date = df['weekNum']
records = df['numRecords']
日期列,它是int64值,如下所示:
...
201850
201851
201852
201901
201902
...
如何将数据框转换为实际日期值(而不是int64),所以在绘制此图时,轴不会因年份变化而中断?
我正在使用matplotlib。
答案 0 :(得分:2)
您所要做的就是使用:
pd.to_datetime(date,format='%Y&%W')
给出了一个错误,该错误应提到Day以将其转换为日期时间。因此,为了解决这个问题,我们在末尾附加一个“ -1”(表示星期一...,您可以添加0到6之间的任何特定值,每个值代表一天)。
然后使用格式中的附加%w获取“星期几”,它将起作用:
pd.to_datetime(date.apply(lambda x: str(x)+'-0'), format="%Y%W-%w")
请记住,要执行上述任何操作,date数据框或系列中的值应为字符串对象。如果没有,您可以使用d.astype(str)轻松地将它们转换,然后执行所有这些操作。