为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 contains 过滤数据框 DatetimeIndex

如何使用 contains 过滤数据框 DatetimeIndex

潇潇雨雨 2023-09-12 20:12:16
我有一个按日期时间索引的数据框。我正在尝试创建某种仅提供包含特定时间的帧的过滤器。例如,所有包含“09:30”的帧df.dtypesopen             float64high             float64low              float64close            float64volume             int64returns          float64returns_final      int64dtype: object我可以根据帧的开头来执行此操作,但我不知道我们是否可以使用通配符类型过滤器。df.loc['2020'].head(5)                    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-06 11:00:00 261.526001  268.399994  261.239990  266.275452  4955678 -4.749451   12020-07-06 12:30:00 266.269043  266.989990  264.200012  265.191986  2002640 1.077057    -12020-07-06 14:00:00 265.185455  269.558014  261.597992  268.513763  3303263 -3.328308   12020-07-06 15:30:00 268.528015  275.558014  268.096008  274.200012  2583149 -5.671997   12020-07-07 09:30:00 281.002014  285.641998  267.341980  277.621979  10130111    3.380035    -12020-07-07 11:00:00 278.000000  284.600006  276.536011  278.123718  4221461 -0.123718   12020-07-07 12:30:00 278.000000  282.000000  277.399994  280.131012  2394459 -2.131012   1我正在尝试沿着这些思路找到一些东西df.loc['*09:30*']我想我可能需要重新索引这个或其他东西任何意见将不胜感激
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

你可以使用这个:


df[df.index.strftime('%H:%M:%S') == '09:30:00']

输出:


                           open        high         low       close    volume   returns  return_final

Datetime                                                                                             

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

2020-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_final

Datetime                                                                                                              

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

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

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

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



查看完整回答
反对 回复 2023-09-12
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

看起来好像有效。


df.filter(like='09:30', axis=0)


    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-07 09:30:00 281.002014  285.641998  267.341980  277.621979  10130111    3.380035    -1

2020-07-08 09:30:00 281.000000  283.399994  277.662018  278.865784  4698944 2.134216    -1

2020-07-09 09:30:00 279.398010  281.500000  271.919983  272.015991  4562064 7.382019    -1

2020-07-10 09:30:00 278.220367  283.799988  275.202026  283.506012  4274774 -5.285645   1



查看完整回答
反对 回复 2023-09-12
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信