在pandas dataframe

时间:2015-09-15 02:52:36

标签: python pandas time dataframe

我正在将csv文件读入pandas DataFrame。 csv文件中的一列时间以'09:53:00 AM'格式存储为字符串。

我需要将此列转换为DataFrame中的时间列。原因是我需要根据时间过滤该列 - 例如我想根据时间大于9:00:00 AM且小于02:00:00 PM过滤数据。

请注意,日期位于单独的列中。我所拥有的是:

Col 1,Col 2(date),Col3(time)
AAA,01/29/2015,9:23:00 AM
BBB,02/18/2015,3:07:00 PM

我需要得到如下结果:只有包含AAA的记录。

1 个答案:

答案 0 :(得分:1)

您可以使用read_csvparse_dates选项:

import pandas as pd
df = pd.read_csv('date.csv', parse_dates=['Col3(time)'])

并且列Col3(time)将被解析为日期。要仅使用时间信息执行选择,您可以使用类似于日期时间列的dt访问器:

t0, t1 = pd.to_datetime(['9:00:00 AM', '02:00:00 PM']).time
print df[(df['Col3(time)'].dt.time > t0) & (df['Col3(time)'].dt.time < t1)]

输出:

  Col 1  Col 2(date)          Col3(time)
0   AAA   01/29/2015 2015-09-15 09:23:00