python - 在 pandas 数据框中为每个组获取第一条记录,并将 0 放入其他记录中
问题描述
我有一个熊猫数据框df
:
s = {'id': [243,243, 243, 243,443,443,443],
'st': [1,3,5,9,2,6,7],
'value':[2.4, 3.8, 3.7, 5.6, 1.2, 0.2, 2.1]}
df = pd.DataFrame(s)
看起来像这样:
id st value
0 243 1 2.4
1 243 3 3.8
2 243 5 3.7
3 243 9 5.6
4 443 2 1.2
5 443 6 0.2
6 443 7 2.1
我想把 0 作为value
除每个记录的第一条记录之外的所有记录id
。我的预期输出是:
id st value
0 243 1 2.4
1 243 3 0
2 243 5 0
3 243 9 0
4 443 2 1.2
5 443 6 0
6 443 7 0
如何使用熊猫数据框做到这一点?
解决方案
另一种方法是:
df.loc[df.id.eq(df.id.shift()),'value']=0
print(df)
id st value
0 243 1 2.4
1 243 3 0.0
2 243 5 0.0
3 243 9 0.0
4 443 2 1.2
5 443 6 0.0
6 443 7 0.0