我已经找遍了所有地方,但我仍然找不到如何在Pandas Dataframe的组中创建两个移位列的示例。
我已经用了一个专栏,如下所示:
data_frame['previous_category'] = data_frame.groupby('id')['category'].shift()但我必须使用两列,一列向上,另一列向下。
有什么想法吗?
发布于 2019-11-14 17:57:25
可以使用GroupBy.apply自定义函数,因为一列需要向下移位,第二列需要向上移位:
df = pd.DataFrame({
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'F':list('aaabbb')
})
def f(x):
x['B'] = x['B'].shift()
x['C'] = x['C'].shift(-1)
return x
df = df.groupby('F').apply(f)
print (df)
B C F
0 NaN 8.0 a
1 4.0 9.0 a
2 5.0 NaN a
3 NaN 2.0 b
4 5.0 3.0 b
5 5.0 NaN b如果要使用相同的移位方式,请仅指定列表中的所有列:
df[['B','C']] = df.groupby('F')['B','C'].shift()
print (df)
B C F
0 NaN NaN a
1 4.0 7.0 a
2 5.0 8.0 a
3 NaN NaN b
4 5.0 4.0 b
5 5.0 2.0 bhttps://stackoverflow.com/questions/58853889
复制相似问题