gpt4 book ai didi

python - 更改 pandas 数据框中的列值,不包括分组依据中的尾部

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:20 24 4
gpt4 key购买 nike

让我们以 python 数据框为例。

ID 年龄 Bp

1 22 1

1 22 1

1 22 0

1 22 1

2 21 0

2 21 1

2 21 0

在上面的代码中,BP 列的最后 n 个系列(让我们认为 n 为 2)按 ID 分组应该被排除并且 BP 的其余部分应该更改为 0。我已经用 tail 试过了但是它不起作用。

它应该是这样的。

身份证年龄BP

1 22 0

1 22 0

1 22 0

1 22 1

2 21 0

2 21 1

2 21 0

最佳答案

使用cumcount使用 ascending=False 为每组后面的计数器分配 0 numpy.where :

n = 2
mask = df.groupby('ID').cumcount(ascending=False) < n
df['Bp'] = np.where(mask, df['Bp'], 0)

备选方案:

df.loc[~mask, 'Bp'] = 0
df['Bp'] = df['Bp'].where(mask, 0)

print (df)
ID Age Bp
0 1 22 0
1 1 22 0
2 1 22 0
3 1 22 1
4 2 21 0
5 2 21 1
6 2 21 0

详细信息:

print (df.groupby('ID').cumcount(ascending=False))
0 3
1 2
2 1
3 0
4 2
5 1
6 0
dtype: int64

print (mask)
0 False
1 False
2 True
3 True
4 False
5 True
6 True
dtype: bool

关于python - 更改 pandas 数据框中的列值,不包括分组依据中的尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53241848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com