gpt4 book ai didi

python - 在两列上使用 pandas groupby 如何派生新列

转载 作者:行者123 更新时间:2023-11-28 19:52:44 25 4
gpt4 key购买 nike

我有一个包含许多列的数据集,我想根据该数据集上的两列创建一个新列。

   train_data[['CtpJobId', 'SegmentId']]

CtpJobId SegmentId
0 qa1-9epx-dk1 347772
1 qa1-9epx-dv1 347774
2 qa1-9epx-dv1 347777
3 qa1-9epx-dv1 347780
4 qa1-9epx-dv1 347783
5 qa1-9epx-dv1 347786
6 qa1-9epx-dv1 347789
7 qa1-9epx-dv1 347792
8 qa1-9epx-e01 347794
9 qa1-9epx-eb2 347795
10 qa1-9epx-ez1 347796
11 qa1-9epx-f32 347797
12 qa1-9epx-fi1 347798

现在我想创建一个名为 numberOfSegment 的新列,例如如果同一个 jobId 有多个 segmentId,然后聚合该 segmentId 并将总和插入到该新列。

      CtpJobId        SegmentId    numberOfSegment
0 qa1-9epx-dk1 347772 1
1 qa1-9epx-dv1 347774 7
2 qa1-9epx-dv1 347777 7
3 qa1-9epx-dv1 347780 7
4 qa1-9epx-dv1 347783 7
5 qa1-9epx-dv1 347786 7
6 qa1-9epx-dv1 347789 7
7 qa1-9epx-dv1 347792 7
8 qa1-9epx-e01 347794 1
9 qa1-9epx-eb2 347795 1
10 qa1-9epx-ez1 347796 1
11 qa1-9epx-f32 347797 1

我用一种方法做了,但它给出了错误的

train_data['NumberOfSegment'] = train_data.groupby('CtpJobId')['SegmentId'].sum()

train_data[['CtpJobId','NumberOfSegment']]

CtpJobId NumberOfSegment
0 qa1-9epx-dk1 NaN
1 qa1-9epx-dv1 NaN
2 qa1-9epx-dv1 NaN
3 qa1-9epx-dv1 NaN
4 qa1-9epx-dv1 NaN
5 qa1-9epx-dv1 NaN
6 qa1-9epx-dv1 NaN
7 qa1-9epx-dv1 NaN
8 qa1-9epx-e01 NaN
9 qa1-9epx-eb2 NaN
10 qa1-9epx-ez1 NaN

谁能帮帮我?提前致谢

最佳答案

您还可以将 value_counts 结果映射到“CtpJobId”:

df['NumberOfSegment'] = df.CtpJobId.map(df.CtpJobId.value_counts())    
df

CtpJobId SegmentId NumberOfSegment
0 qa1-9epx-dk1 347772 1
1 qa1-9epx-dv1 347774 7
2 qa1-9epx-dv1 347777 7
3 qa1-9epx-dv1 347780 7
4 qa1-9epx-dv1 347783 7
5 qa1-9epx-dv1 347786 7
6 qa1-9epx-dv1 347789 7
7 qa1-9epx-dv1 347792 7
8 qa1-9epx-e01 347794 1
9 qa1-9epx-eb2 347795 1
10 qa1-9epx-ez1 347796 1
11 qa1-9epx-f32 347797 1
12 qa1-9epx-fi1 347798 1

关于python - 在两列上使用 pandas groupby 如何派生新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51406341/

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