gpt4 book ai didi

python - 如何比较一列的两行,然后更改 pandas 中的另一列

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:01 25 4
gpt4 key购买 nike

我希望能够查看具有相同标识号的两行,然后比较每个人的 child 数量,并为两个人分配较大的数字。我正在考虑按 (.groupby) ID 号进行分组,但我不知道从哪里开始。具体来说,我不确定如何检查哪个 numchild 更大,同时用较大的数字替换较小的数字。例如:

 Index   ID             NumChil  
0 2011000070 3
1 2011000070 0
2 2011000074 0
3 2011000074 1

应该变成:

 Index   ID             NumChil  
0 2011000070 3
1 2011000070 3
2 2011000074 1
3 2011000074 1

最佳答案

首选选项
您希望将 groupbytransformmax

结合使用
df.groupby('ID').NumChil.transform('max')

0 3
1 3
2 1
3 1
Name: NumChil, dtype: int64
<小时/>

您可以使用以下方式分配回原处

df['NumChil'] = df.groupby('ID').NumChil.transform('max')
df

Index ID NumChil
0 0 2011000070 3
1 1 2011000070 3
2 2 2011000074 1
3 3 2011000074 1

或者使用以下命令生成副本

df.assign(NumChil=df.groupby('ID').NumChil.transform('max'))

Index ID NumChil
0 0 2011000070 3
1 1 2011000070 3
2 2 2011000074 1
3 3 2011000074 1
<小时/>

替代方法

groupbymaxmap

df.ID.map(df.groupby('ID').NumChil.max())

0 3
1 3
2 1
3 1
Name: ID, dtype: int64
<小时/>
df.assign(NumChil=df.ID.map(df.groupby('ID').NumChil.max()))

Index ID NumChil
0 0 2011000070 3
1 1 2011000070 3
2 2 2011000074 1
3 3 2011000074 1

groupbymaxjoin

df.drop('NumChil', 1).join(df.groupby('ID').NumChil.max(), on='ID')

Index ID NumChil
0 0 2011000070 3
1 1 2011000070 3
2 2 2011000074 1
3 3 2011000074 1

关于python - 如何比较一列的两行,然后更改 pandas 中的另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110942/

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