gpt4 book ai didi

python - 连续的下一个值进入新列 Pandas 数据框

转载 作者:行者123 更新时间:2023-11-28 20:15:49 24 4
gpt4 key购买 nike

我有一个数据框

id    value
v1 100
v1 200
v1 300
v1 400
v2 500
v2 600
v2 700
v3 800
v3 900

我希望将数据框转换为新的数据框 df2:

id   val1    val2
v1 100 200
v1 200 300
v1 300 400
v1 400 100
v2 500 600
v2 600 700
v2 700 500
v3 800 900
v3 900 800

即移动下一列中的下一个连续值,并按 id 进行分组,

我尝试使用 df.shift() ,但没有用。

有什么替代方案吗?

最佳答案

我们想使用 np.roll在小组内完成任务。通过使用 transform,我们避免了被组内索引挂断。

df.groupby('id').value.transform(np.roll, shift=-1)

0 200
1 300
2 400
3 100
4 600
5 700
6 500
7 900
8 800
Name: value, dtype: int64

我们可以使用 assign 将新列添加到 df 的副本中

df.assign(val2=df.groupby('id').value.transform(np.roll, shift=-1))

id value val2
0 v1 100 200
1 v1 200 300
2 v1 300 400
3 v1 400 100
4 v2 500 600
5 v2 600 700
6 v2 700 500
7 v3 800 900
8 v3 900 800

或者直接在df原地添加新列

df['val2'] = df.groupby('id').value.transform(np.roll, shift=-1)

df

id value val2
0 v1 100 200
1 v1 200 300
2 v1 300 400
3 v1 400 100
4 v2 500 600
5 v2 600 700
6 v2 700 500
7 v3 800 900
8 v3 900 800

关于python - 连续的下一个值进入新列 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45318054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com