【问题标题】:How to split date and time from string? [duplicate]如何从字符串中拆分日期和时间? [复制]
【发布时间】:2018-07-16 04:39:19
【问题描述】:

我有一个从 excel 导入到 pandas 的数据集。有一个字符串格式的单列日期和时间。

16-MAR-16 11.35.27.000000000 AM
05-APR-16 05.21.14.000000000 PM
16-FEB-16 09.56.36.000000000 AM
16-MAR-16 11.35.27.000000000 AM
16-MAR-16 09.28.11.000000000 AM
19-MAY-16 03.50.38.000000000 PM

我想将此数据拆分为日期和时间到不同的列。我已经解决了几个相同的问题,但找不到答案。

我试过的这个代码

(1)df["timestamp"] = pd.to_datetime(df['Invoice Date'],dayfirst = True)

(Error)File "C:\Users\admin\Anaconda3\lib\site-packages\dateutil\parser.py", line 559, in parse
raise ValueError("Unknown string format")
ValueError: Unknown string format


(2)from datetime import datetime

df["timestamp"] = df["Invoice Date"].apply(lambda x: datetime.strptime(x,"dd-mmm-yy hh.mm.ss.%f aa"))

(Error)  ValueError: time data '16-MAR-16 11.35.27.000000000 AM' does not match format 'dd-mmm-yy hh.mm.ss.%f aa'

请帮帮我。

【问题讨论】:

标签: python python-3.x pandas data-analysis


【解决方案1】:

使用参数formatreference

df["timestamp"] = pd.to_datetime(df['Invoice Date'], format='%d-%b-%y %H.%M.%S.%f %p')
print (df)

                      Invoice Date           timestamp
0  16-MAR-16 11.35.27.000000000 AM 2016-03-16 11:35:27
1  05-APR-16 05.21.14.000000000 PM 2016-04-05 05:21:14
2  16-FEB-16 09.56.36.000000000 AM 2016-02-16 09:56:36
3  16-MAR-16 11.35.27.000000000 AM 2016-03-16 11:35:27
4  16-MAR-16 09.28.11.000000000 AM 2016-03-16 09:28:11
5  19-MAY-16 03.50.38.000000000 PM 2016-05-19 03:50:38

如果需要 2 个单独的日期和时间列:

d = pd.to_datetime(df['Invoice Date'], format='%d-%b-%y %H.%M.%S.%f %p')
df['date'] = d.dt.date
df['time'] = d.dt.time
print (df)

                      Invoice Date        date      time
0  16-MAR-16 11.35.27.000000000 AM  2016-03-16  11:35:27
1  05-APR-16 05.21.14.000000000 PM  2016-04-05  05:21:14
2  16-FEB-16 09.56.36.000000000 AM  2016-02-16  09:56:36
3  16-MAR-16 11.35.27.000000000 AM  2016-03-16  11:35:27
4  16-MAR-16 09.28.11.000000000 AM  2016-03-16  09:28:11
5  19-MAY-16 03.50.38.000000000 PM  2016-05-19  03:50:38

【讨论】:

  • 你怎么知道这么多 pandas...我看到几乎所有的问题都被你回答了...你有很好的资源来掌握 pandas
  • @jezrael OP 明确询问“我想将这些数据拆分为不同列中的日期和时间。”,
  • @vks - 是的,如果我有时间我会尝试回答。
  • 看起来更好:)
猜你喜欢
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
相关资源
最近更新 更多