代码之家  ›  专栏  ›  技术社区  ›  user288609

关于一个代码段的问题,可能与datetime函数有关

  •  0
  • user288609  · 技术社区  · 6 年前

    有代码段,

    start = datetime.datetime.strptime("1973-01-01", "%Y-%m-%d")
    date_list = [start + relativedelta(months=x) for x in range(0,115)]
    

    打印的过期清单如下:

    datetime.datetime(1973, 1, 1, 0, 0),
     datetime.datetime(1973, 2, 1, 0, 0),
     datetime.datetime(1973, 3, 1, 0, 0),
     datetime.datetime(1973, 4, 1, 0, 0),
     datetime.datetime(1973, 5, 1, 0, 0),
     datetime.datetime(1973, 6, 1, 0, 0),
     datetime.datetime(1973, 7, 1, 0, 0),
     datetime.datetime(1973, 8, 1, 0, 0),
    

    df['index']=date_list
    df.set_index(['index'], inplace=True)
    df.index.name=None
    

    但是,打印输出 df 如下所示,令我困惑的是 就像 1973-03-01 datetime.datetime(1973,3,1,0,0) . 代码的哪个部分导致了这个更改。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Evgeny    6 年前

    为了简洁易读,如果你看到 datetime.datetime(1973,3,1,0,0) 1973-03-01 ? 在创建数据帧时,pandas可以将日期类型强制为 pd.Timestamp ,也许会发生这样的事 df.set_index() 命令。你也可以检查 df.index 也是。

    日期时间.日期时间(1973,3,1,0,0) 1973年3月1日 好多了。如果你饿了 datetime datetime.date 更简洁一点,因为你似乎只处理日期,而不是时间。