【问题标题】:get subset of rows n days forward of index [duplicate]获取索引前 n 天的行子集 [重复]
【发布时间】:2021-03-24 11:06:58
【问题描述】:

我有一组符合条件的索引:

for col in signal.columns:
    for sign in signs:
        index = signal.index[signal[col] == sign].tolist()
        for i in index:

此时,我想提前查看该列在 i 到 i + n 天的值范围(其中 n 是整数);类似:

            print(signal[col].iloc[i:i + n])

但是,我无法将 int 添加到日期 i:

TypeError: unsupported operand type(s) for +: 'datetime.date' and 'int'

【问题讨论】:

  • 您可以发布一个具有预期结果的示例虚拟数据框吗?

标签: pandas


【解决方案1】:

您必须使用 dateutil.relativedelta lib 来计算您的日期并使用 .loc[date] 来定位您的行数据。

【讨论】:

    【解决方案2】:

    iloc() 主要查看一行('i' 部分),其中 .loc() 会给你一个切片。在此处查看 iloc() 文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html

    您应该能够将您的代码与 .loc 而不是 iloc 一起使用,或者只是一个切片。但请注意返回的内容略有不同。我的示例有一个名为“打开”的列。

    i=10
    n=5
    col = 'Open'
    
    
    In [38]: print(df[col].loc[i])
    1.1778571
    
    In [39]: print(df[col].loc[i:i+n])
    10   1.178
    11   1.135
    12   1.156
    13   1.154
    14   1.104
    15   1.082
    Name: Open, dtype: float64
    
    In [40]: print(df[col][i:i+n]) #one less row than inlcuding .loc()
    10   1.178
    11   1.135
    12   1.156
    13   1.154
    14   1.104
    Name: Open, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多