gpt4 book ai didi

python - 使用根据另一列的值更改的组 ID 创建新列

转载 作者:行者123 更新时间:2023-12-04 07:29:50 25 4
gpt4 key购买 nike

我有一个包含一堆问答 session 的数据框。每次说话者改变时,数据帧都会有一个新行。我正在尝试为答案分配问题特征,因此我想为每个问答组创建一个 ID。在下面的示例中,我想在每次提出新问题时增加 id(speakertype_id == 3 => 问题;speakertype_id == 4 => 答案)。我目前循环遍历数据框,如下所示:

Q_A = pd.DataFrame({'qna_id':[9]*10,
'qnacomponentid':[3,4,5,6,7,8,9,10,11,12],
'speakertype_id':[3,4,3,4,4,4,3,4,3,4]})


group = [0]*len(Q_A)
j = 1
for index,row in enumerate(Q_A.itertuples()):
if row[3] == 3:
j+=1
group[index] = j

Q_A['group'] = group
这给了我所需的输出并且比我预期的要快得多,但是 this post让我怀疑我是否应该遍历 Pandas 数据框。关于更好的方法的任何想法?谢谢。
**编辑:预期输出:
qna_id  qnacomponentid  speakertype_id  group
9 3 3 2
9 4 4 2
9 5 3 3
9 6 4 3
9 7 4 3
9 8 4 3
9 9 3 4
9 10 4 4
9 11 3 5
9 12 4 5

最佳答案

您可以使用 eq cumsum 喜欢:

Q_A['gr2'] = Q_A['speakertype_id'].eq(3).cumsum()
print(Q_A)
qna_id qnacomponentid speakertype_id group gr2
0 9 3 3 2 1
1 9 4 4 2 1
2 9 5 3 3 2
3 9 6 4 3 2
4 9 7 4 3 2
5 9 8 4 3 2
6 9 9 3 4 3
7 9 10 4 4 3
8 9 11 3 5 4
9 9 12 4 5 4
请注意,不确定您是否有任何理由从 2 开始,但您可以添加 +1cumsum如果这是一个要求

关于python - 使用根据另一列的值更改的组 ID 创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68007040/

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