Geo*_*eRF 35 python datetime pandas
我在名为train的数据帧中有一个类型为string(object)的列I_DATE,如下所示.
I_DATE
28-03-2012 2:15:00 PM
28-03-2012 2:17:28 PM
28-03-2012 2:50:50 PM
Run Code Online (Sandbox Code Playgroud)
如何将I_DATE从字符串转换为数据时格式并指定输入字符串的格式.我看到了一些答案,但它不适用于AM/PM格式.
另外,如何根据pandas中的日期范围过滤行?
EdC*_*ica 57
使用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]
Run Code Online (Sandbox Code Playgroud)
要访问日期/日期/时间组件,请使用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
Run Code Online (Sandbox Code Playgroud)
您可以使用字符串过滤作为示例:
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
Run Code Online (Sandbox Code Playgroud)
方法: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]'})
对于 AM/PM 格式的日期时间,时间格式为'%I:%M:%S %p'。请访问https://strftime.org/查看所有可能的格式组合。format=注意:如果您有像 OP 中那样的时间组件,如果您通过了(请参阅此处了解更多信息),转换将完成得非常非常快。
df['I_DATE'] = pd.to_datetime(df['I_DATE'], format='%d-%m-%Y %I:%M:%S %p')
Run Code Online (Sandbox Code Playgroud)
要使用范围过滤日期时间,您可以使用query:
df = pd.DataFrame({'date': pd.date_range('2015-01-01', '2015-04-01')})
df.query("'2015-02-04' < date < '2015-02-10'")
Run Code Online (Sandbox Code Playgroud)
或用于between创建蒙版和过滤器。
df[df['date'].between('2015-02-04', '2015-02-10')]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70067 次 |
| 最近记录: |