我希望能够查看具有相同标识号的两行,然后比较每个人的孩子数并为两个人分配更大的数字。我本来打算按(.groupby)ID号分组,但是我不确定从那里去哪里。具体来说,我不确定如何检查较大的数字,同时用较大的数字替换较小的数字。例如:
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
您想groupby
与transform
和使用的首选选项max
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
替代方法
groupby
与max
和map
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
groupby
与max
和join
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句