gpt4 book ai didi

python - 创建一个列,按条件将行集的最大值分配给该组中的所有行

转载 作者:行者123 更新时间:2023-12-01 00:25:25 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

data    metadata
A 0
A 1
A 2
A 3
A 4
B 0
B 1
B 2
A 0
A 1
B 0
A 0
A 1
B 0

df.data 包含两个不同的类别,AB。 df.metadata 存储类别更改之前类别连续出现的次数的运行计数。我想创建一个列 consecutive_count ,将每个连续组的元数据最大值分配给该组中的每一行。它应该看起来像这样:

data    metadata    consecutive_count
A 0 4
A 1 4
A 2 4
A 3 4
A 4 4
B 0 2
B 1 2
B 2 2
A 0 1
A 1 1
B 0 0
A 0 1
A 1 1
B 0 0

请指教。谢谢。

最佳答案

方法一:
您可以尝试对每组数据的groupby进行变换max

s = df.data.ne(df.data.shift()).cumsum()
df['consecutive_count'] = df.groupby(s).metadata.transform('max')

Out[96]:
data metadata consecutive_count
0 A 0 4
1 A 1 4
2 A 2 4
3 A 3 4
4 A 4 4
5 B 0 2
6 B 1 2
7 B 2 2
8 A 0 1
9 A 1 1
10 B 0 0
11 A 0 1
12 A 1 1
13 B 0 0
<小时/>

方法2:
由于 metadata 按组排序,因此您可以反转数据帧并执行 groupby cummax

s = df.data.ne(df.data.shift()).cumsum()
df['consecutive_count'] = df[::-1].groupby(s).metadata.cummax()

Out[101]:
data metadata consecutive_count
0 A 0 4
1 A 1 4
2 A 2 4
3 A 3 4
4 A 4 4
5 B 0 2
6 B 1 2
7 B 2 2
8 A 0 1
9 A 1 1
10 B 0 0
11 A 0 1
12 A 1 1
13 B 0 0

关于python - 创建一个列,按条件将行集的最大值分配给该组中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58616714/

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