如何在 Pandas 中将字符串转换为日期时间格式?
- 2024-12-17 08:30:00
- admin 原创
- 138
问题描述:
我I_DATE
在一个数据框中有一个字符串类型(对象)的列train
,如下所示。
I_DATE
28-03-2012 2:15:00 PM
28-03-2012 2:17:28 PM
28-03-2012 2:50:50 PM
如何I_DATE
从字符串转换为日期时间格式并指定输入字符串的格式。
另外,如何根据熊猫中的日期范围过滤行?
解决方案 1:
使用to_datetime
。在这种情况下,无需指定格式,因为解析器能够弄清楚。
In [51]:
pd.to_datetime(df['I_DATE'])
Out[51]:
0 2012-03-28 14:15:00
1 2012-03-28 14:17:28
2 2012-03-28 14:50:50
Name: I_DATE, dtype: datetime64[ns]
要访问日期/日期/时间组件,请使用dt
访问器:
In [54]:
df['I_DATE'].dt.date
Out[54]:
0 2012-03-28
1 2012-03-28
2 2012-03-28
dtype: object
In [56]:
df['I_DATE'].dt.time
Out[56]:
0 14:15:00
1 14:17:28
2 14:50:50
dtype: object
您可以使用字符串进行过滤作为示例:
In [59]:
df = pd.DataFrame({'date':pd.date_range(start = dt.datetime(2015,1,1), end = dt.datetime.now())})
df[(df['date'] > '2015-02-04') & (df['date'] < '2015-02-10')]
Out[59]:
date
35 2015-02-05
36 2015-02-06
37 2015-02-07
38 2015-02-08
39 2015-02-09
解决方案 2:
方法:1
给定原始string
格式:2019/03/04 00:08:48
你可以使用
updated_df = df['timestamp'].astype('datetime64[ns]')
结果将采用以下datetime
格式:2019-03-04 00:08:48
方法:2
updated_df = df.astype({'timestamp':'datetime64[ns]'})
解决方案 3:
对于 AM/PM 格式的日期时间,时间格式为'%I:%M:%S %p'
。查看https://strftime.org/上的所有可能的格式组合。NB 如果您有 OP 中的时间组件,则通过转换将完成得更快format=
(有关更多信息,请参阅此处)。
df['I_DATE'] = pd.to_datetime(df['I_DATE'], format='%d-%m-%Y %I:%M:%S %p')
要使用范围过滤日期时间,您可以使用query
:
df = pd.DataFrame({'date': pd.date_range('2015-01-01', '2015-04-01')})
df.query("'2015-02-04' < date < '2015-02-10'")
或用来between
创建蒙版和过滤器。
df[df['date'].between('2015-02-04', '2015-02-10')]
解决方案 4:
我认为这是一个更好的方法。有时,熊猫中的日期可能会很奇怪,这是我的首选解决方案(万无一失)。
df['I_DATE'] = pd.to_datetime(df['I_DATE'], format='mixed', errors='coerce')
df[(df['I_DATE'] >= pd.to_datetime('2023-07-01')) & (df['I_DATE'] <= pd.to_datetime('2023-09-30'))]
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD