Pandas选择具有布尔日期条件的列

Mar*_*kNS 3 python pandas

我想使用布尔索引从pandas数据帧中选择一个日期时间索引作为列标题的列:

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

收益:

   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
Run Code Online (Sandbox Code Playgroud)

我只想返回前三列.

DSM*_*DSM 8

我可能会这样做

>>> 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
Run Code Online (Sandbox Code Playgroud)

您可以直接对列索引进行矢量化比较,而无需使用map/ lambda组合.