Drop row based on time

大兔子大兔子 提交于 2020-01-04 04:32:08

问题


I want to know how to drop row based on time column. My dataframe:

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

I want to eliminate row below than 11:00:00 and above 15:00:00, so expected a result:

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

I use this code but nothing happens.

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

回答1:


Convert values to timedeltas by to_timedelta and filter by Series.between with 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


来源:https://stackoverflow.com/questions/55559498/drop-row-based-on-time

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!