pandas - 根据时间删除行

标签 pandas time row

我想知道如何根据时间列删除行。我的数据框:

df
ID   Time
ID1 9:00:00
ID2 10:00:00
ID3 11:00:00
ID4 12:00:00
ID5 13:00:00
ID6 14:00:00
ID7 15:00:00
ID8 16:00:00
ID9 17:00:00

我想消除低于 11:00:00 和高于 15:00:00 的行,因此预期结果:

Result
ID   Time
ID3 11:00:00
ID4 12:00:00
ID5 13:00:00
ID6 14:00:00
ID7 15:00:00

我使用此代码,但没有任何反应。

df = pd.read_csv('data.csv')
index_list= df.Time[(df.Time < "09:00:00") & (df.Time > "17:00:00")].index.tolist()
df.drop(df.index[index_list] , inplace = True)
df

最佳答案

将值转换为时间增量to_timedelta并按Series.between过滤与 boolean indexing :

df = pd.read_csv('data.csv')

df['Time'] = pd.to_timedelta(df['Time'])
print (df.dtypes)
ID               object
Time    timedelta64[ns]
dtype: object

df = df[df['Time'].between('11:00:00','15:00:00')]
print (df)
    ID     Time
2  ID3 11:00:00
3  ID4 12:00:00
4  ID5 13:00:00
5  ID6 14:00:00
6  ID7 15:00:00

关于pandas - 根据时间删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559498/

相关文章:

python - Pandas 选择根计数 3 次的行

pandas:按二级索引范围将值分配给多索引切片

java - 减去 System.currentTimeMillis() 得到零

android - ListView 行中的各种项目 - 屏幕截图示例

python - pandas 将相同的值合并在同一行中

php - 在 php 中超过 24 小时的字符串时间

mysql - 在日期时间mysql中转换一年中的 float 日期

php - 如何在提交之前使用 jquery ajax 验证表单?

c# - 将新列中的按钮添加到 DataGrid 中的所有行

python - 在 Pandas 中,选择标签包含指定级别的给定字符串的所有列