python - Python Pandas 根据条件添加 Max 列
问题描述
这是我的表 1
Time A B C D
1:00:00 1 5 4 3
2:00:00 2 9 5 2
3:00:00 3 3 3 1
4:00:00 4 1 9 3
5:00:00 5 3 3 5
6:00:00 6 4 4 4
7:00:00 7 6 5 8
8:00:00 8 7 6 6
以及如何按以下方式添加 Max 列!
Time A B C D A Max B Max C Max D Max
1:00:00 1 5 4 3
2:00:00 2 9 5 2 9
3:00:00 3 3 3 1
4:00:00 4 1 9 3 9
5:00:00 5 3 3 5
6:00:00 6 4 4 4
7:00:00 7 6 5 8 8
8:00:00 8 7 6 6 8
这是我的简单代码。
df = pd.DataFrame(data=df, columns=['A','B','C','D'])
max = df.groupby(['Datetime']).agg(A_Max=pd.NamedAgg(column='A', aggfunc='max'))
解决方案
你可以试试:
s = df.iloc[:, 1:]
df.join(s.where(s.eq(s.max())).add_suffix(' Max'))
输出:
Time A B C D A Max B Max C Max D Max
0 1:00:00 1 5 4 3 NaN NaN NaN NaN
1 2:00:00 2 9 5 2 NaN 9.0 NaN NaN
2 3:00:00 3 3 3 1 NaN NaN NaN NaN
3 4:00:00 4 1 9 3 NaN NaN 9.0 NaN
4 5:00:00 5 3 3 5 NaN NaN NaN NaN
5 6:00:00 6 4 4 4 NaN NaN NaN NaN
6 7:00:00 7 6 5 8 NaN NaN NaN 8.0
7 8:00:00 8 7 6 6 8.0 NaN NaN NaN
更新:对于最小值和最大值:
df.join(s.where(s.eq(s.max())|s.eq(s.min())).add_suffix(' MaxMin'))
输出:
Time A B C D A MaxMin B MaxMin C MaxMin D MaxMin
0 1:00:00 1 5 4 3 1.0 NaN NaN NaN
1 2:00:00 2 9 5 2 NaN 9.0 NaN NaN
2 3:00:00 3 3 3 1 NaN NaN 3.0 1.0
3 4:00:00 4 1 9 3 NaN 1.0 9.0 NaN
4 5:00:00 5 3 3 5 NaN NaN 3.0 NaN
5 6:00:00 6 4 4 4 NaN NaN NaN NaN
6 7:00:00 7 6 5 8 NaN NaN NaN 8.0
7 8:00:00 8 7 6 6 8.0 NaN NaN NaN
推荐阅读
- android - osmdroid 的集群太多
- api - 我不拥有的 Google 助理操作访问 API
- php - 从多个同名输入中获取数据
- c++ - GTKMM:如何将键盘事件附加到绘图区?
- javascript - 动态导入图像(React Js)(需要 img 路径找不到模块)
- python - pytorch 模型的 Coreml 模型浮点输入
- javascript - 由于某种原因,每个用户会记录两次可投票的投票
- delphi - 如何仅在 fkData 上应用 TClientDataSet StatusFilter
- ruby - 错误的参数类型 nil(预期的字符串)(TypeError)
- python - 用numpy linalg lstsq曲线拟合复杂方程