首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在分组的pandas数据帧中创建两个移位列

在分组的pandas数据帧中创建两个移位列
EN

Stack Overflow用户
提问于 2019-11-14 17:54:20
回答 1查看 135关注 0票数 1

我已经找遍了所有地方,但我仍然找不到如何在Pandas Dataframe的组中创建两个移位列的示例。

我已经用了一个专栏,如下所示:

代码语言:javascript
复制
data_frame['previous_category'] = data_frame.groupby('id')['category'].shift()

但我必须使用两列,一列向上,另一列向下。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-14 17:57:25

可以使用GroupBy.apply自定义函数,因为一列需要向下移位,第二列需要向上移位:

代码语言:javascript
复制
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

如果要使用相同的移位方式,请仅指定列表中的所有列:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58853889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档