如何使用 contains 过滤数据框 DatetimeIndex

我有一个按日期时间索引的数据框。我正在尝试创建某种仅提供包含特定时间的帧的过滤器。


例如,所有包含“09:30”的帧


df.dtypes

open             float64

high             float64

low              float64

close            float64

volume             int64

returns          float64

returns_final      int64

dtype: object

我可以根据帧的开头来执行此操作,但我不知道我们是否可以使用通配符类型过滤器。



df.loc['2020'].head(5)


                    open        high         low        close         volume    returns returns_final

Datetime                            

2020-07-06 09:30:00 255.337982  261.950012  253.208786  261.421997  6592145 -6.084015   1

2020-07-06 11:00:00 261.526001  268.399994  261.239990  266.275452  4955678 -4.749451   1

2020-07-06 12:30:00 266.269043  266.989990  264.200012  265.191986  2002640 1.077057    -1

2020-07-06 14:00:00 265.185455  269.558014  261.597992  268.513763  3303263 -3.328308   1

2020-07-06 15:30:00 268.528015  275.558014  268.096008  274.200012  2583149 -5.671997   1

2020-07-07 09:30:00 281.002014  285.641998  267.341980  277.621979  10130111    3.380035    -1

2020-07-07 11:00:00 278.000000  284.600006  276.536011  278.123718  4221461 -0.123718   1

2020-07-07 12:30:00 278.000000  282.000000  277.399994  280.131012  2394459 -2.131012   1

我正在尝试沿着这些思路找到一些东西


df.loc['*09:30*']

我想我可能需要重新索引这个或其他东西


任何意见将不胜感激


潇潇雨雨
浏览 95回答 2
2回答

翻翻过去那场雪

你可以使用这个:df[df.index.strftime('%H:%M:%S') == '09:30:00']输出:                           open        high         low       close    volume   returns  return_finalDatetime                                                                                             2020-07-06 09:30:00  255.337982  261.950012  253.208786  261.421997   6592145 -6.084015             12020-07-07 09:30:00  281.002014  285.641998  267.341980  277.621979  10130111  3.380035            -1一天中的多个时间:df[df.index.strftime('%H:%M:%S').isin(['09:30:00','11:00:00'])]您可以使用过滤器,就像使用正则表达式一样:df.filter(regex='09:30|11:00', axis=0)输出:                                      open        high         low              close    volume  returns  return_finalDatetime                                                                                                              2020-07-06 09:30:00 255.337982  261.950012  253.208786  261.421997  6592145 -6.084015  1.000000      NaN           NaN2020-07-06 11:00:00 261.526001  268.399994  261.239990  266.275452  4955678 -4.749451  1.000000      NaN           NaN2020-07-07 09:30:00 281.002014  285.641998  267.341980  277.621979           10130111  3.380035     -1.0           NaN2020-07-07 11:00:00 278.000000  284.600006  276.536011  278.123718  4221461 -0.123718  1.000000      NaN           NaN

料青山看我应如是

看起来好像有效。df.filter(like='09:30', axis=0)    open    high    low close   volume  returns returns_finalDatetime                            2020-07-06 09:30:00 255.337982  261.950012  253.208786  261.421997  6592145 -6.084015   12020-07-07 09:30:00 281.002014  285.641998  267.341980  277.621979  10130111    3.380035    -12020-07-08 09:30:00 281.000000  283.399994  277.662018  278.865784  4698944 2.134216    -12020-07-09 09:30:00 279.398010  281.500000  271.919983  272.015991  4562064 7.382019    -12020-07-10 09:30:00 278.220367  283.799988  275.202026  283.506012  4274774 -5.285645   1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python