Python 使用数据帧按索引进行移位

Python 使用数据帧按索引进行移位,python,pandas,indexing,shift,Python,Pandas,Indexing,Shift,有没有办法做到这一点: predicted_sells = [] for row in df.values: index_tms = row[0] delta = index_tms + timedelta(hours=1) try: sells_to_predict = df.loc[delta]['cars_sold'] except KeyError: new_element = None predicted_sell

有没有办法做到这一点:

predicted_sells = []
for row in df.values:
    index_tms = row[0]
    delta = index_tms + timedelta(hours=1)
    try:
        sells_to_predict = df.loc[delta]['cars_sold']
    except KeyError:
        new_element = None
    predicted_sells.append(sells_to_predict)


df['sell_to_predict'] = predicted_sells
示例说明:

sell是我在tms时售出的汽车数量。sell_to_predict是我一小时后卖出的汽车数量。我想预测一下。因此,我想建立一个新的列,包含tms时我将在tms+1h时出售的汽车数量

在我编写代码之前,它看起来是这样的

                tms  sell 
2015-11-23 15:00:00     6               
2015-11-23 16:00:00     2               
2015-11-23 17:00:00    10         
                tms  sell  sell_to_predict
2015-11-23 15:00:00     6                2
2015-11-23 16:00:00     2               10
2015-11-23 17:00:00    10              NaN
在它看起来像那样之后

                tms  sell 
2015-11-23 15:00:00     6               
2015-11-23 16:00:00     2               
2015-11-23 17:00:00    10         
                tms  sell  sell_to_predict
2015-11-23 15:00:00     6                2
2015-11-23 16:00:00     2               10
2015-11-23 17:00:00    10              NaN
我根据另一列的移位创建了一个新列,但这不是列数的移位。这是基于索引的移位(这里的索引是时间戳)

下面是另一个稍微复杂一点的例子:

之前:

            sell  random
store hour              
1     1        1       9
      2        7       7
2     1        4       3
      2        2       3
之后:

            sell  random  predict
store hour              
1     1        1       9        7
      2        7       7      NaN
2     1        4       3        2
      2        2       3      NaN

你试过换档吗

e、 g


答案是重新采样,这样我就不会有任何漏洞,然后应用这个问题的答案:

你能提供一个你想修改的数据帧的小例子,以及你希望得到的例子吗?从您提供的示例中,不清楚
index\u tms
['old\u column]
实际代表什么。例如,为什么下面的方法不起作用
df['new_column']=df.index+timedelta(hours=1)
想象一下,我想预测一小时内我将售出的汽车数量。我在“old_栏”中列出了我使用该指数时售出的汽车数量。然后我想精确计算一小时后售出的汽车数量,因此我想创建一个包含一小时后售出汽车数量的“新_列”。为了说明这一点,我将编辑我的问题。这不是我想要的,因为它不是基于索引比较的。之前的行并不总是在一小时前有索引的行。此外,我没有说在我的问题tho中,我还有一个索引(这里说的是汽车店的id),所以前一行可以引用发生在其他商店的销售。