【问题标题】:Python pandas: extract date and time from timestampPython pandas:从时间戳中提取日期和时间
【发布时间】:2020-06-27 10:25:33
【问题描述】:

我有一个时间戳列 (Time),其中时间戳采用以下格式

0       02.28.2020 10:21:26.0734 vorm.
1       02.28.2020 10:21:27.0720 vorm.
2       02.28.2020 10:21:30.0705 vorm.
3       02.28.2020 10:21:31.0742 vorm.
4       02.28.2020 10:21:32.0606 vorm.

3978    02.28.2020 11:30:11.1122 vorm.
3979    02.28.2020 11:30:12.1078 vorm.
3980    02.28.2020 11:30:13.1100 vorm.
3981    02.28.2020 11:30:14.1190 vorm.
3982    02.28.2020 11:30:15.1086 vorm.
Name: Time, Length: 3983, dtype: object

我尝试通过以下方式转换Timestamp对象中的字符串对象:

df['Time'] = [datetime.datetime.strptime(d, "%d.%m.%Y %H:%M:%S.%f %p.") for d in df["Time"]]

但我收到以下错误:

ValueError: time data '02.28.2020 10:21:26.0734 vorm.' does not match format '%d.%m.%Y %H:%M:%S.%f %p.'

我假设错误来自“vorm.”,即“AM”的指示。

【问题讨论】:

  • pd.to_datetime(df[0].str.replace('vorm.','')) 为我工作 0 是您的列名
  • PM 是什么值?

标签: python pandas date timestamp


【解决方案1】:

使用 to_datetime 并将格式更改为 %H 到 %I 以获取 12 小时格式的比赛时间,还将 %d 和 %m 月与天交换,并且需要正确解析 AM 和 PM替换dict中的值:

df['Time'] = pd.to_datetime(df["Time"].replace({'vorm.' :'AM'}, regex=True), 
                            format="%m.%d.%Y %I:%M:%S.%f %p")
print (df)
                           Time
0    2020-02-28 10:21:26.073400
1    2020-02-28 10:21:27.072000
2    2020-02-28 10:21:30.070500
3    2020-02-28 10:21:31.074200
4    2020-02-28 10:21:32.060600
3978 2020-02-28 11:30:11.112200
3979 2020-02-28 11:30:12.107800
3980 2020-02-28 11:30:13.110000
3981 2020-02-28 11:30:14.119000
3982 2020-02-28 11:30:15.108600

【讨论】:

  • 完美运行,非常感谢您的快速和乐于助人的回答!
  • @Federico_Lorenzo 也可以为PM 增加价值,例如将{'vorm.' :'AM'} 更改为{'vorm.' :'AM', 'some value': 'PM'}
猜你喜欢
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多