Python 用相同的值标识下一行,并创建新的数据框列
我有以下数据帧:Python 用相同的值标识下一行,并创建新的数据框列,python,pandas,loops,dataframe,iterator,Python,Pandas,Loops,Dataframe,Iterator,我有以下数据帧: import pandas as pd # create simple dataset of people data_pandas = pd.DataFrame({'Order': [1, 1, 1,1,2,2,2], 'X': [30,44,30,44,44,30,44], 'Y': [46,46,35,45,90,60,60]}) 我想创建一个具有以下逻辑
import pandas as pd
# create simple dataset of people
data_pandas = pd.DataFrame({'Order': [1, 1, 1,1,2,2,2],
'X': [30,44,30,44,44,30,44],
'Y': [46,46,35,45,90,60,60]})
我想创建一个具有以下逻辑的新列“Z”:
识别具有相同“X”值的下一行,并基于“Order”列使用该行的“Y”值创建新的“Z”列
输出如下所示
data_pandas_result = pd.DataFrame({
'Order': [1, 1, 1,1,2,2,2],
'X': [30,44,30,44,44,30,44],
'Y': [46,46,35,45,90,60,60],
'Z': [35,45,NA,NA,60,NA,NA]})
我如何有效地做到这一点?我可以考虑根据顺序对数据帧进行子集设置,并根据您的逻辑找到相关的匹配项,
groupby
+shift
df['Z']=df.groupby(['Order','X']).Y.shift(-1)
df
Out[327]:
Order X Y Z
0 1 30 46 35.00000
1 1 44 46 45.00000
2 1 30 35 nan
3 1 44 45 nan
4 2 44 90 60.00000
5 2 30 60 nan
6 2 44 60 nan