【问题标题】:Cannot convert from pandas._libs.tslibs.timestamps.Timestamp to datetime.datetime无法从 pandas._libs.tslibs.timestamps.Timestamp 转换为 datetime.datetime
【发布时间】:2021-01-04 13:28:44
【问题描述】:

我正在尝试将 pandas._libs.tslibs.timestamps.Timestamp 转换为 datetime.datetime 但更改未保存

type(df_unix.loc[45,'LastLoginDate'])

输出:pandas._libs.tslibs.timestamps.Timestamp

type(df_unix.loc[45,'LastLoginDate'].to_pydatetime())

输出:日期时间.日期时间

df_unix.loc[45,'LastLoginDate'] = df_unix.loc[i,'LastLoginDate'].to_pydatetime()

type(df_unix.loc[45,'LastLoginDate'])

OUTPUT: pandas._libs.tslibs.timestamps.Timestamp

【问题讨论】:

  • 请输入您的日期的示例输入,或者至少是您的回溯的副本
  • 时间戳('1970-01-01 00:00:00')

标签: python pandas datetime


【解决方案1】:

假设你有这个日期:

some_date = pd.Timestamp("1970-01-01")
print(some_date)
Output: Timestamp('1970-01-01 00:00:00')

要将其转换为日期时间,只需执行以下操作:

some_date.to_pydatetime()

你会得到:

output: datetime.datetime(1970, 1, 1, 0, 0)

你不能使用datetime.datetime(some_date),因为datetime.datetime类的构造函数需要3个整数:

一年一个,一个月一个,一天一个。

【讨论】:

    【解决方案2】:

    df_unix.loc[45,'LastLoginDate'] 返回一个标量值。 pandas 使用Timestamp 作为标量值,因此类型正确。

    运行df_unix.info()。您应该会看到列类型仍然是 datetime64[ns]

    您还使用to_pydatetime 在位置45 分配一个值,该值用于返回本机Python 日期时间对象。如果这改变了整个列的类型,那将是一个有趣的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多