簡體   English   中英

在分組的 pandas 數據幀中創建兩個移位列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM