gpt4 book ai didi

python - 如何根据一组行在 Pandas DataFrame 中创建一个新列

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:32 26 4
gpt4 key购买 nike

我有以下数据框:

import pandas as pd
cols = 'id,seq,msg'.split(',')

data = [
['001',1,'abc aaa'],
['001',2,'bcd bbb'],
['001',3,'cde ccc'],
['001',1,'def ddd'],
['001',2,'efg eee'],
['001',3,'fgh fff'],
['001',4,'ghi ggg'],
['002',1,'hij hhh'],
['002',2,'ijk iii'],
['002',3,'jkl jjj']
]
df = pd.DataFrame(data,columns=cols)
print(df)

输出:

    id  seq      msg
0 001 1 abc aaa
1 001 2 bcd bbb
2 001 3 cde ccc
3 001 1 def ddd
4 001 2 efg eee
5 001 3 fgh fff
6 001 4 ghi ggg
7 002 1 hij hhh
8 002 2 ijk iii
9 002 3 jkl jjj

如何获得如下输出:

    id  seq      msg msg_num
0 001 1 abc aaa 1
1 001 2 bcd bbb 1
2 001 3 cde ccc 1
3 001 1 def ddd 2
4 001 2 efg eee 2
5 001 3 fgh fff 2
6 001 4 ghi ggg 2
7 002 1 hij hhh 3
8 002 2 ijk iii 3
9 002 3 jkl jjj 3

在上面的数据框中,id#001下有两条消息,id#002下有一条消息。seq字段排在id字段之后。多行 msg 字段创建一条消息。每当新消息开始时,seq # 都会发生变化。

最佳答案

国际联合会

df.seq.diff().lt(0).cumsum().add(1)
Out[203]:
0 1
1 1
2 1
3 2
4 2
5 2
6 2
7 3
8 3
9 3
Name: seq, dtype: int64

关于python - 如何根据一组行在 Pandas DataFrame 中创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848365/

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