Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas select columns with boolean date condition

Tags:

python

pandas

I'd like to use a boolean index to select columns from a pandas dataframe with a datetime index as the column header:

dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(4, 6), index=list('ABCD'), columns=dates)

returns:

   2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06
A    0.173096    0.344348    1.059990   -1.246944    1.624399   -0.276052
B    0.277148    0.965226   -1.301612   -1.264500   -0.124489    1.704485
C   -0.375106    0.103812    0.939749   -2.826329   -0.275420    0.664325
D    0.039756    0.631373    0.643565   -1.516543   -0.654626   -1.544038

I'd like to return only the first three columns.

like image 951
MarkNS Avatar asked Apr 10 '26 12:04

MarkNS


1 Answers

I might do

>>> df.loc[:, df.columns <= datetime(2013, 1, 3)]
   2013-01-01  2013-01-02  2013-01-03
A    1.058112    0.883429   -1.939846
B    0.753125    1.664276   -0.619355
C    0.014437    1.125824   -1.421609
D    1.879229    1.594623   -1.499875

You can do vectorized comparisons on the column index directly without using the map/lambda combination.

like image 198
DSM Avatar answered Apr 13 '26 00:04

DSM



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!