pandas - 根据时间删除行
问题描述
我想知道如何根据时间列删除行。我的数据框:
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
解决方案
将值转换为 timedeltas并通过withto_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
推荐阅读
- paypal - 如何管理 IPN url 和 notify_url
- mysql - 如何按分组汇总金额
- python - 在 Pandas 中将一级混合标头数据帧转换为垂直数据帧
- forms - Veevalidate - Buefy - 我如何在 ValidationProvider 之外使用错误?
- php - 多个条件的PHP MySQL更新问题
- php - 如何将收集结果传递给视图?
- python - sklearn 0.22 中的 sklearn.feature_extraction.FeatureHasher
- typescript - 是否可以选择严格传播对象?
- nginx - Nginx 在 100-Continue 后没有收到第二个请求,401 响应
- django - 使用 nginx gunicorn 在 digitalocean 上部署 django react