【问题标题】:Python strptime giving int instead of datetime object within dataframePython strptime 在数据框中给出 int 而不是 datetime 对象
【发布时间】:2019-10-16 13:08:10
【问题描述】:

我有一个从 excel 表中获取的数据框,我正在尝试添加一些代码来将字符串日期转换为日期时间,在这些代码中它们不会被自动提取为日期时间。字符串 '27/06/2019' 有 2 行条目

df.loc[df['Start Date'].apply(lambda x: isinstance(x, str)), 'Start Date'] =

然后我尝试了以下方法:

df.loc[df['Start Date'].apply(lambda x: isinstance(x, str)), 'Start Date'].apply(lambda y: datetime.strptime(y, "%d/%m/%Y"))

我得到的结果是 1561593600000000000

当我尝试通过在末尾添加 .date() 将日期时间转换为日期时:

df.loc[df['Start Date'].apply(lambda x: isinstance(x, str)), 'Start Date'].apply(lambda y: datetime.strptime(y, "%d/%m/%Y").date())

它有效,但我只得到一个日期对象,而不是日期时间。

我尝试过将 datetime.combine 与 time.min 结合使用,但仍然是同样的问题。

有什么想法吗?

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    我认为最好使用to_datetime:

    df['Start Date'] = pd.to_datetime(df['Start Date'], dayfirst=True)
    

    或者:

    df['Start Date'] = pd.to_datetime(df['Start Date'], format="%d/%m/%Y")
    

    在您的解决方案中删除 .date():

    mask = df['Start Date'].apply(lambda x: isinstance(x, str))
    df.loc[mask, 'Start Date'].apply(lambda y: datetime.strptime(y, "%d/%m/%Y"))
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 2022-11-21
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      相关资源
      最近更新 更多