【发布时间】:2021-07-10 03:46:33
【问题描述】:
我正在处理一个包含日期的大型数据集(格式为“mm/dd/yyyy”),并且我正在尝试绘制与该日期相关的某个指标。现在由于日期需要在 x 轴上,我知道我需要将它们转换为浮点数。我目前有两种方法:
- 使用字符串解析获取月/年/日期,将它们转换为浮点数,然后将它们相加,如下所示:
def get_date_float(date_str):
# date_str = something like "01/13/2021"
m, d, y = float(date_str[:2]), float(date_str[3:5]), float(date_str[6:])
return y + (m / 12) + (0.01 * d / num_days_in_month(int(m)))
注意:num_days_in_month 使用来自calendar 模块的monthrange 函数。
但是,这会导致日期的浮点数不太准确。例如,日期“12/15/2020”变成浮点数“2021.004839”,这显然是错误的。我不确定为什么会发生这种情况 - 我从上面尝试了对 m/d/y 变量的不同操作,但总是存在一定程度的错误。
- 阅读this answer后,我尝试使用
datetime模块将字符串转换为浮点数,如下所示:
def date_str_to_datetime_to_float(date_str):
# date_str = "12/15/2020"
datetime_obj = datetime.strptime(date_str, "%m/%d/%Y")
print(datetime_obj.timestamp())
但是,时间戳是一个非常大的数字(自某个开始时间以来的毫秒数?)。例如,日期“12/15/2020”变为时间戳“1608019200.0”。但是,我想要“2020.921”之类的东西。
感谢所有帮助;谢谢!
【问题讨论】:
-
我发现日期时间通常在 x 轴上绘制得相当好,并且在浮动的持续时间方面更容易修改,并且更清楚地展示了随时间的变化。 (如果它们是从字符串to_datetime转换而来的)
-
啊,只是绘制日期时间对象效果很好;谢谢!!
标签: python pandas dataframe datetime