Python 使用shift()函数,将数据帧的另一列的值作为标准

Python 使用shift()函数,将数据帧的另一列的值作为标准,python,pandas,dataframe,Python,Pandas,Dataframe,我需要创建一个新列来获取以前的目标值。为此,我需要处理Id_传感器。在每个新Id_传感器的第一次迭代中,Reccurent_目标必须为“NaN” 我创建了这条线,但它不正确,因为它不检查Id_传感器是否有变化 df['Reccurent_Target'] = df['Target'].shift(1) 我有以下数据帧: import pandas as pd df = pd.DataFrame({'Id_Sensor': [108, 108, 108, 880,

我需要创建一个新列来获取以前的目标值。为此,我需要处理Id_传感器。在每个新Id_传感器的第一次迭代中,Reccurent_目标必须为“NaN”

我创建了这条线,但它不正确,因为它不检查Id_传感器是否有变化

    df['Reccurent_Target'] = df['Target'].shift(1)
我有以下数据帧:

     import pandas as pd

     df = pd.DataFrame({'Id_Sensor': [108, 108, 108, 880, 880, 880, 880],
                       'Target':  [5, 5, 5, 20, 20, 10, 20]})

      print(df)
我希望输出如下:

       Id_Sensor  Target        Reccurent_Target
         108       5              NaN
         108       5                5
         108       5                5
         880      20              NaN
         880      20               20
         880      10               20
         880      20               10
然而,我实现的输出是:

      Id_Sensor  Target        Reccurent_Target
         108       5              NaN
         108       5                5
         108       5                5
         880      20                5
         880      20               20
         880      10               20
         880      20               10

您需要
groupby

df['Reccurent_Target'] = df.groupby('Id_Sensor').Target.shift()


Out[65]:
   Id_Sensor  Target  Reccurent_Target
0        108       5               NaN
1        108       5               5.0
2        108       5               5.0
3        880      20               NaN
4        880      20              20.0
5        880      10              20.0
6        880      20              10.0

这回答了你的问题吗?