按时间获取行,而不考虑熊猫中的日期

时间:2020-09-12 10:53:47

标签: python python-3.x pandas

我的数据如下:

Col1,ColDate
a,2020-09-11 08:43:00
b,2020-09-12 09:43:00
c,13-09-2020 09:43:00
d,09/16/2020 10:43:00
e,09/19/2020 12:43:00
f,09/12/2020 15:43:00

意图是获取介于0000和0900小时之间的所有行,而不考虑日期及其格式。在大熊猫中

我正在尝试以下操作:

df[df["ColDate"].between('00:00:00','09:00:00')]

我得到一个空的数据框。

编辑

我知道between_time函数使用索引中的时间。有替代方法吗?我不想修改索引。

2 个答案:

答案 0 :(得分:2)

如果“ ColDate”尚未采用日期时间格式:

df[pd.to_datetime(df['ColDate']).dt.hour.isin(range(0,9))]

否则就

df[df['ColDate'].dt.hour.isin(range(0,9))]

答案 1 :(得分:1)

使用pandas.DataFrame.between_time

df["ColDate"] = pd.to_datetime(df["ColDate"]) # If not in datetime already
new_df = df.set_index("ColDate").between_time("00:00:00", "09:00:00")
print(new_df.reset_index())

或其他方式:

new_df = df[df["ColDate"].dt.time.between(*pd.to_datetime(["00:00:00", "09:00:00"]).time)]

输出:

              ColDate Col1
0 2020-09-11 08:43:00    a