I'm looking for a way to filter a multiindex dataframe like the following by day of the week and/or selected dates. Let's say I need
select only mondays
; select all days except monday and friday
;select all dates in ['2015-05-14', '2015-05-21', '2015-05-22']
;select all dates in ['2015-05-14', '2015-05-21', '2015-05-22'] and thursdays
.What's the way to do it?
Col1 Col2 Col3 Col4
Date Two
2015-05-14 10 81.370003 6.11282 39.753 44.950001
11 80.419998 6.03380 39.289 44.750000
C3 80.879997 6.00746 41.249 44.360001
2015-05-19 3 80.629997 6.10465 41.047 40.980000
S9 80.550003 6.14370 41.636 42.790001
2015-05-21 19 80.480003 6.16096 42.137 43.680000
2015-05-22 C3 80.540001 6.13916 42.179 43.490002
If you have the Date
as datetime
type, you can just use dayofweek
to get the day of week and query based on it.
Select only Mondays:
df[df.index.get_level_values('Date').dayofweek == 0]
Select days except Monday and Friday:
import numpy as np
df[np.in1d(df.index.get_level_values('Date').dayofweek, [1,2,3,5,6])]
# Col1 Col2 Col3 Col4
# Date Two
#2015-05-14 10 81.370003 6.11282 39.753 44.950001
# 11 80.419998 6.03380 39.289 44.750000
# C3 80.879997 6.00746 41.249 44.360001
#2015-05-19 3 80.629997 6.10465 41.047 40.980000
# S9 80.550003 6.14370 41.636 42.790001
#2015-05-21 19 80.480003 6.16096 42.137 43.680000
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With