条件数据帧移位

时间:2018-07-06 14:27:26

标签: python pandas dataframe

我在数据框下方

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

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

for column_name in df.columns:
    df[column_name+"_shift"]=df[column_name]

欢呼