根据熊猫数据框中的特定 id 更改列的值

Gee*_*Gee 4 python dataframe pandas

我有以下排序的数据框,我想将id 列中每个id的最后一个值设置为0

id value
1   500
1   50
1   36
2   45
2   150
2   70
2   20
2   10
Run Code Online (Sandbox Code Playgroud)

我可以使用将整个id 列的最后一个值设置为 0 df['value'].iloc[-1] = 0。如何设置id : 1id : 2的最后一个值以获得以下输出。

id value
1   500
1   50
1   0
2   45
2   150
2   70
2   20
2   0
Run Code Online (Sandbox Code Playgroud)

Ben*_*n.T 5

您可以执行drop_duplicates并保留 last 以获取每个 id 的最后一行。使用index这些行并将值设置为 0

df.loc[df['id'].drop_duplicates(keep='last').index, 'value'] = 0

print(df)
   id  value
0   1    500
1   1     50
2   1      0
3   2     45
4   2    150
5   2     70
6   2     20
7   2      0
Run Code Online (Sandbox Code Playgroud)