如何在 pandas python 中将字符串转换为日期时间格式?
Posted
技术标签:
【中文标题】如何在 pandas python 中将字符串转换为日期时间格式?【英文标题】:How to convert string to datetime format in pandas python? 【发布时间】:2015-11-19 04:40:26 【问题描述】:我在名为 train 的数据框中有一列 I_DATE 类型为 string(object),如下所示。
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 从字符串转换为数据时间格式并指定输入字符串的格式。我看到了一些答案,但它不适用于 AM/PM 格式。
另外,如何根据 pandas 中的日期范围过滤行?
【问题讨论】:
【参考方案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
【讨论】:
如果你有一个字符串格式,其中日期被描述为 15.05.2010 这个方法不会总是把它变成正确的日期时间因此你需要解析 @Yags 在原始问题中您的格式在哪里指定?问题和答案是具体的,不是涵盖不同格式的通用解决方案【参考方案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]')
【讨论】:
以上是关于如何在 pandas python 中将字符串转换为日期时间格式?的主要内容,如果未能解决你的问题,请参考以下文章
在 Pandas 中将字符串列转换为日期的有效方法(在 Python 中),但没有时间戳
在python pandas中将多年列转换为单年列(整洁格式)[重复]