【问题标题】:Object to time conversion in pandas derived column熊猫派生列中的对象到时间转换
【发布时间】:2021-01-14 23:37:22
【问题描述】:

您好,在日期时间方面需要帮助,

我以 mm:ss eg(23:50) 的形式提取了分秒值 但在那之后,现在我需要将其转换为 '%H:%M:%S' 格式,但它给出了错误,因为它是 dtype('o') 类型,在下面的代码中使用,但它给出了错误,该怎么办做

df_raw['Time-only'] = pd.to_datetime(df_raw['time2'], format='%H:%M:%S').dt.time

【问题讨论】:

  • 请显示几行数据,打印df.head(5).to_dict() 将输出粘贴到您所看到的问题中。此外,如果可能,请展示您的期望。节省猜测工作。

标签: python pandas datetime types


【解决方案1】:

首先,to_datetime 用于将给定的字符串格式转换为日期时间。例如,如果我有一个字符串 '2018-04-10 12:37:51.252'

df_raw['time2'] = pd.to_datetime(df_raw['time2'], format='%Y-%m-%d %H:%M:%S.%f')

执行上述操作只会更改数据类型。您可以通过以下方式验证它们

df_raw.dtypes

现在,为了回答您的问题,我相信您正在尝试将时间戳 mm:ss 转换为 hh:mm:ss?如果没有,你能更具体一点吗?

df_raw['Time-only'] = list(df_raw['time2'].map(lambda f: datetime.strftime(f, "%H:%M:%S")))

这段代码会将您的时间戳格式更改为 12:37:51。

【讨论】:

  • 使用了解决方案,但它抛出错误为:TypeError: 'datetime.date' 对象的描述符'strftime' 不适用于'str' 对象
  • 因为'time2'的类型是str。首先,通过执行 df_raw['time2'] = pd.to_datetime(df_raw['time2'], format='') 将 time2 转换为时间戳
  • 这只是我的问题,我无法将它转换为日期时间
  • 您能粘贴您要转换的确切值吗?或数据框的任何行。
【解决方案2】:

我相信您需要将值转换为 timedeltas 以进行下一个矢量化处理,例如减法或求和:

df_raw = pd.DataFrame({'time2':['23:50','15:23']})

df_raw['Time-only'] = pd.to_timedelta('00:' + df_raw['time2'])
print (df_raw)
   time2       Time-only
0  23:50 0 days 00:23:50
1  15:23 0 days 00:15:23

如果转换为时间,则无法使用矢量化操作,因为获取对象python time

【讨论】:

  • @Manakin - 嗯,转换为 timedeltas?
  • 哦,你是对的,我以为你的电话是 to_datetime,我的错
猜你喜欢
  • 2019-03-24
  • 2018-07-08
  • 2023-02-06
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多