Python 使用shift()函数,将数据帧的另一列的值作为标准
我需要创建一个新列来获取以前的目标值。为此,我需要处理Id_传感器。在每个新Id_传感器的第一次迭代中,Reccurent_目标必须为“NaN” 我创建了这条线,但它不正确,因为它不检查Id_传感器是否有变化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,
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
这回答了你的问题吗?