问题
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