【问题标题】:How to convert date-string to float for representation of an x-axis?如何将日期字符串转换为浮点数以表示 x 轴?
【发布时间】:2021-07-10 03:46:33
【问题描述】:

我正在处理一个包含日期的大型数据集(格式为“mm/dd/yyyy”),并且我正在尝试绘制与该日期相关的某个指标。现在由于日期需要在 x 轴上,我知道我需要将它们转换为浮点数。我目前有两种方法:

  1. 使用字符串解析获取月/年/日期,将它们转换为浮点数,然后将它们相加,如下所示:
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 变量的不同操作,但总是存在一定程度的错误。

  1. 阅读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


【解决方案1】:

在 cmets 中解决!显然 datetime 对象在 x 轴上的图形非常好。

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 2011-11-25
    • 2011-08-23
    • 2019-08-13
    • 1970-01-01
    • 2018-01-28
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多