python - 大熊猫中的分组累积最大值
问题描述
import pandas as pd
gender = {'Type': ["Male","Male","Male","Female","Female","Female","Male","Male","Male","Female","Female","Female","Female","Male","Male","Female","Female","Female"],
'Age': [40, 22, 23, 55, 75, 31, 22, 23, 26, 29, 33, 32, 40, 41, 47, 48, 54]}
df = pd.DataFrame.from_dict(gender)
print(df)
Type Age
0 Male 40
1 Male 22
2 Male 23
3 Female 55
4 Female 75
5 Female 31
6 Male 22
7 Male 23
8 Male 26
9 Female 29
10 Female 33
11 Female 32
12 Female 40
13 Male 41
14 Male 47
15 Female 48
16 Female 54
Expected Output
Type Age Group_Max
0 Male 40 40
1 Male 22 40
2 Male 23 40
3 Female 55 75
4 Female 75 75
5 Female 31 75
6 Male 22 26
7 Male 23 26
8 Male 26 26
9 Female 29 40
10 Female 33 40
11 Female 32 40
12 Female 40 40
13 Male 41 47
14 Male 47 54
15 Female 48 54
16 Female 54 54
我不是在寻找以下输出,因为我希望每次性别类型发生变化时都重置 cummax
df["cumsum"] = df.groupby(['Type']).Age.cummax()
Type Age cumsum
0 Male 40 40
1 Male 22 40
2 Male 23 40
3 Female 55 55
4 Female 75 75
5 Female 31 75
6 Male 22 40
7 Male 23 40
8 Male 26 40
9 Female 29 75
10 Female 33 75
11 Female 32 75
12 Female 40 75
13 Male 41 41
14 Male 47 47
15 Female 48 75
16 Female 54 75
解决方案
创建两个辅助列以分别针对该组。
df['tag'] = df['Type'] != df['Type'].shift(1)
df['label'] = df.loc[df['tag'], 'tag'].cumsum()
df['label'] = df['label'].fillna(method='ffill')
df['Group_Max'] = df.groupby('label')['Age'].transform(max)
输出:
Type Age tag label Group_Max
0 Male 40 True 1.0 40
1 Male 22 False 1.0 40
2 Male 23 False 1.0 40
3 Female 55 True 2.0 75
4 Female 75 False 2.0 75
5 Female 31 False 2.0 75
6 Male 22 True 3.0 26
7 Male 23 False 3.0 26
8 Male 26 False 3.0 26
9 Female 29 True 4.0 40
10 Female 33 False 4.0 40
11 Female 32 False 4.0 40
12 Female 40 False 4.0 40
13 Male 41 True 5.0 47
14 Male 47 False 5.0 47
15 Female 48 True 6.0 54
16 Female 54 False 6.0 54
推荐阅读
- reactjs - react js中带有滑动的引导下拉菜单
- reactjs - 如何正确定义非 ts react 组件的类型,这些组件是另一个 react 组件的键
- rx-java2 - 具有 Vertx 和 RxJava2 导入的 Quarkus 产生 NoClassDefFoundError
- javascript - 拉取大型 JSON 字符串
- c++ - C++20 概念中“相等”的概念
- c - 测量矩阵乘法参数的程序错误
- reactjs - React App with Jest - Jest 遇到了一个意外的令牌
- typescript - 在 TypeScript 中,如何根据函数参数之一的返回类型创建函数的返回类型?
- laravel-5 - 当具有角色 X 的用户登录时显示 CompanyX 的已记录工单
- ios - UIDocumentPickerMode.exportToService 不工作