更改列中的所有第一个值,从其他列分组
2018-05-20
72
我有 2 列 - _a、_b。
import numpy as np
import pandas as pd
df = pd.DataFrame({'_a':[1,1,1,2,2,3,3],'_b':[3,4,5,3,3,3,9]})
df
_a _b
0 1 3
1 1 4
2 1 5
3 2 3
4 2 3
5 3 3
6 3 9
我需要将 _b 列中的第一个值更改为 0,并按 _a 列分组 如下所示:
_a _b
0 1 0
1 1 4
2 1 5
3 2 0
4 2 3
5 3 0
6 3 9
提前谢谢您。
3个回答
默认情况下,
pd.Series.duplicated
对第一项返回 False。利用此功能,您可以执行以下操作:
df.loc[~df['_a'].duplicated(), '_b'] = 0
df
Out:
_a _b
0 1 0
1 1 4
2 1 5
3 2 0
4 2 3
5 3 0
6 3 9
2018-05-20
如果每组的第一个值不重复,则可以使用以下命令:
df.loc[df.groupby('_a').head(1).index, '_b'] = 0
输出:
_a _b
0 1 0
1 1 4
2 1 5
3 2 0
4 2 3
5 3 0
6 3 9
cfort
2018-05-20
您可以使用
np.unique
获取
df._b
中每个值首次出现的索引:
df._b[np.unique(df._a, return_index=True)[1]] = 0
hilberts_drinking_problem
2018-05-20