【问题标题】:How to add the date in a datetime object when only time is present in timestamp当时间戳中仅存在时间时如何在日期时间对象中添加日期
【发布时间】:2019-11-08 21:43:10
【问题描述】:

我正在处理一些时间序列数据,时间戳只包括时间(HH:MM:SS),但我需要将YY/MM/DD 添加到时间戳中。我使用熊猫数据框。

我尝试使用 pd.to_datetime(),但它输入了我调用它的当前日期。

df_17c = pd.read_csv(file_17c,sep ='\t', header = None,names=['TimeStamp','x','y','z'],  usecols =[0,3,4,5])

df_17s = pd.read_csv(file_17s,sep ='\t', header = None,names = ['TimeStamp','x','y','z'],usecols =[0,1,2,3])

 TimeStamp      x    y  z
0  23:59:58  26799 -218  0
1  23:59:58  26797 -218  0
2  23:59:58  26795 -218  0
3  23:59:58  26793 -218  0
4  23:59:58  26792 -217  0


“TimeStamp”列是一个对象类型(字符串)。当我使用.to_datetime() 进行转换时,它会产生具有当前日期的日期时间对象。

df_17c["Date"]= pd.to_datetime(df_17c['TimeStamp'])

            TimeStamp      x    y  z
0 2019-06-26 23:59:58  26799 -218  0
1 2019-06-26 23:59:58  26797 -218  0
2 2019-06-26 23:59:58  26795 -218  0
3 2019-06-26 23:59:58  26793 -218  0
4 2019-06-26 23:59:58  26792 -217  0

【问题讨论】:

  • 您可以使用应该更快的字符串连接,但我想查看一些数据和预期的输出。正如下面的答案。

标签: python pandas


【解决方案1】:

这可能不是最有效的方法,但很简单(基本上是在字符串前面加上日期)

date = '2017-01-09T'  # or whatever (note the T)
pd.to_datetime(df['TimeStamp'].apply(lambda s: date+s)) 

例子

df = pd.DataFrame({'time': ['08:11:09', '17:09:34']})

#   time
# 0  08:11:09
# 1  17:09:34

date_func = '2017-01-09T{}'.format  # avoid the use of lambda + more efficient

df['datetime'] = pd.to_datetime(df['time'].apply(date_func))

输出

       time            datetime
0  08:11:09   2017-01-09 08:11:09
1  17:09:34   2017-01-09 17:09:34

【讨论】:

  • 谢谢。它运作良好。 T{}.format 在代码中的作用。
  • 'some text {}'.format 是一个function,它用传递给它的参数替换任何{}。所以'ABC {} DEF'.format(123) == 'ABC 123 DEF''T' 是 ISO 日期时间格式 specification 的一部分。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多