【问题标题】:Converting dataframe column from Pandas Timestamp to datetime (or datetime.date)将数据框列从 Pandas 时间戳转换为日期时间(或 datetime.date)
【发布时间】:2022-11-30 07:19:18
【问题描述】:

bjillion python 时间格式导致的时间损失比我做的任何事情都要多。

将文件或 sql 查询读入数据框会给我一列 Pandas 时间戳(即 type = pandas._libs.tslibs.timestamps.Timestamp)。不是“正常”的时间戳。我想转换为日期时间。我找到的答案没有解决这个特定的“时间戳”和数据帧中的列的组合。

以下解决方案有效,但是否存在更紧凑或“pythonic”转换?

df['date'] = [pd.Timestamp.to_pydatetime(x).date() for x in df['pdTimeStamp']]
df['datetime'] = [pd.Timestamp.to_pydatetime(x) for x in df['pdTimeStamp']]

由于错误的“时间戳”类型,下面的内容不起作用(典型的在线答案几乎一致地解决了典型的“时间戳”类型)

df['date'] = df['pdTimeStamp'].apply(lambda d: datetime.date.fromtimestamp(d))
TypeError: an integer is required (got type Timestamp)

【问题讨论】:

    标签: python pandas dataframe datetime timestamp


    【解决方案1】:

    我没有样本 df 的假设是你可以使用:

    df['date'] = df['pdTimeStamp'].apply(lambda x: pd.Timestamp(x).strftime('%Y-%m-%d'))
    

    【讨论】:

    • 谢谢。这在概念上不是类似于所示的列表理解吗?但是,这不会产生 datetime.date 或 datetime.datetime
    • 是的,它是一个可以使用 pd.to_datetime() 转换的字符串。如果您共享数据的示例 df,那将有进一步的帮助。
    猜你喜欢
    • 2016-10-05
    • 2017-06-06
    • 2021-01-18
    • 2016-03-21
    • 2019-11-29
    • 1970-01-01
    • 2020-05-23
    • 2013-09-27
    • 2021-02-12
    相关资源
    最近更新 更多