首页 > 解决方案 > 在 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

如何使用熊猫数据框做到这一点?

标签: pythonpandas

解决方案


另一种方法是:

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

推荐阅读