我在数据框下方
ID1 ID2 mon price
10 2 06 500
20 3 07 200
20 3 08 300
20 3 09 400
21 2 07 100
21 2 08 200
21 2 09 300
必填输出:-
ID1 ID2 mon price ID1_shift ID2_shift mon_shift price_shift
10 2 06 500 10 2 06 500
20 3 07 200 20 3 07 200
20 3 08 300 20 3 07 200
20 3 09 400 20 3 08 300
21 2 07 100 21 2 07 100
21 3 08 200 21 2 07 100
21 4 09 300 21 3 08 200
我尝试以其他方式使用df.shift(),但没有成功。
您有价值的评论会有所帮助。
我想按(ID1,ID2)移动数据帧组,如果NaN则用当前值填充。
我在下面尝试过,但它只能用于单列。
df["price_shift"]=df.groupby(["ID1","ID2"]).price.shift().fillna(df["price"])
谢谢
我想出了以下内容,但这对于较少的列来说是可行的。有什么办法可以像上面那样按组移动完整的行吗?
df1['price_shift']=df.groupby(['ID1','ID2']).price.shift(1).fillna(df['price'])
df1['mon_shift']=df.groupby(['ID1','ID2']).mon.shift(1).fillna(df['mon'])
df1[['ID1_shift','ID2_shift']]=df[['ID1','ID2']]
df2=pd.concat([df, df1],axis=1)
df2
答案 0 :(得分:0)
尝试以下操作:
for column_name in df.columns:
df[column_name+"_shift"]=df[column_name]
欢呼