我的数据如下:
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函数使用索引中的时间。有替代方法吗?我不想修改索引。
答案 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