gpt4 book ai didi

python - 选择具有间隔的行

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:44 25 4
gpt4 key购买 nike

我有一个带有 TimeIndexed 值的宽 Pandas 数据框,我想使用我制作的 Interval 对象进行选择:

inter = pd.Interval(pd.Timestamp('2017-12-05 16:36:17'),
pd.Timestamp('2017-12-05 22:00:00'), closed='left')

我尝试了 loc 和 iloc 方法,但它们不接受 Interval 实例作为参数。

我可以通过这种方式测试时间戳是否在该间隔内:

pd.Timestamp('2017-12-05 22:00:00') in inter

但是我无法写一行来选择数据框的行。

最佳答案

设置

s = pd.Series(
pd.date_range('2017-12-05 16:00:00', '2017-12-05 23:00:00', freq='H')
)
s

0 2017-12-05 16:00:00
1 2017-12-05 17:00:00
2 2017-12-05 18:00:00
3 2017-12-05 19:00:00
4 2017-12-05 20:00:00
5 2017-12-05 21:00:00
6 2017-12-05 22:00:00
7 2017-12-05 23:00:00
dtype: datetime64[ns]

下面是解决这个问题的方法,适用于区间包含的所有 4 种情况

  1. closed='left'

    (inter.left <= s) & (s < inter.right)

    0 False
    1 True
    2 True
    3 True
    4 True
    5 True
    6 False
    7 False
    dtype: bool
  2. closed='right'

    (inter.left < s) & (s <= inter.right)

    0 False
    1 True
    2 True
    3 True
    4 True
    5 True
    6 True
    7 False
    dtype: bool
  3. closed='两者都不'

    (inter.left < s) & (s < inter.right)

    0 False
    1 True
    2 True
    3 True
    4 True
    5 True
    6 False
    7 False
    dtype: bool
  4. closed='both'(使用pd.Series.between,效率应该稍微高一点)。

    s.between(inter.left, inter.right, inclusive=True) 

    0 False
    1 True
    2 True
    3 True
    4 True
    5 True
    6 True
    7 False
    dtype: bool

使用这些方法中的任何一种计算这些数量后,选择行就很容易 s[mask] 其中 mask 是我们刚刚在上面计算的 bool 掩码。

关于python - 选择具有间隔的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com