gpt4 book ai didi

python - 为 Pandas 数据框中的下一个连续行添加新列

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:39 24 4
gpt4 key购买 nike

我有一个数据框:

    id  value
0 1 0
1 1 100
2 1 200
3 1 300
4 1 0
5 2 0
6 2 500
7 2 600
8 2 0
9 3 0
10 3 700
11 3 0

对于值列中的每个条目,我想添加属于值列中下一行条目的新列,

例如:

     id  value   value2
0 1 0 100
1 1 100 200
2 1 200 300
3 1 300 0
4 2 0 500
5 2 500 600
6 2 600 0
7 3 0 700
8 3 700 0

最佳答案

选项 1
通过使用 numpy 而不是 pd.Series.shift 我避免了 np.nan 的插入和转换为 float

df.groupby(
'id', group_keys=False
).apply(lambda d: d.iloc[:-1].assign(value2=d.value.values[1:]))

id value value2
0 1 0 100
1 1 100 200
2 1 200 300
3 1 300 0
5 2 0 500
6 2 500 600
7 2 600 0
9 3 0 700
10 3 700 0

选项 2
如果您所有的 'id' 都放在一起,我可以在整个列上执行 np.roll,然后再执行一个简单的 groupby

df.assign(
value2=np.roll(df.value.values, -1)
).groupby('id', group_keys=False).apply(pd.DataFrame.head, n=-1)

id value value2
0 1 0 100
1 1 100 200
2 1 200 300
3 1 300 0
5 2 0 500
6 2 500 600
7 2 600 0
9 3 0 700
10 3 700 0

关于python - 为 Pandas 数据框中的下一个连续行添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232081/

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