[英]Creating two shifted columns in grouped pandas data-frame
我已經查看了所有內容,但仍然找不到如何在其組內的 Pandas Dataframe 中創建兩個移位列的示例。
我用一列完成了它,如下所示:
data_frame['previous_category'] = data_frame.groupby('id')['category'].shift()
但我必須用 2 列來完成,一列向上移動,另一列向下移動。
有任何想法嗎?
可以通過使用GroupBy.apply
自定義 function 來實現,因為一列需要向下移動,第二列需要向上移動:
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 b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.