Python 如何比较一列的两行,然后更改另一列
我希望能够查看具有相同标识号的两行,然后比较每个人的儿童数量,并为两个人分配较大的数字。我正在考虑按(.groupby)ID号分组,但我不确定该从何处着手。具体地说,我不知道如何检查哪个numchild更大,同时用较大的数字替换较小的数字。例如:Python 如何比较一列的两行,然后更改另一列,python,pandas,Python,Pandas,我希望能够查看具有相同标识号的两行,然后比较每个人的儿童数量,并为两个人分配较大的数字。我正在考虑按(.groupby)ID号分组,但我不确定该从何处着手。具体地说,我不知道如何检查哪个numchild更大,同时用较大的数字替换较小的数字。例如: Index ID NumChil 0 2011000070 3 1 2011000070 0 2 2011000074
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
替代方法
df.ID.map(df.groupby('ID').NumChil.max())
0 3
1 3
2 1
3 1
Name: ID, dtype: int64
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
groupby
带有max
和map
df.ID.map(df.groupby('ID').NumChil.max())
0 3
1 3
2 1
3 1
Name: ID, dtype: int64
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
groupby
与max
和join
df.ID.map(df.groupby('ID').NumChil.max())
0 3
1 3
2 1
3 1
Name: ID, dtype: int64
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