获取 padas 数据帧中每一行后的最小值和最大值



我正在尝试创建列来表示组中每一行后的最小/最大值。

原DF

╔═════════════╦═══════════
═╗ ║ 颜色 ║ 面板 ║ 结果 ║ ╠═══════╬═══════╬════════╣ ║ 蓝色 ║ b ║ 4 ║ ║ 蓝色 ║ b ║ 3 ║ ║ 蓝色 ║ b ║ 3 ║ ║ 蓝色 ║ b ║ 5 ║ ║ 蓝色 ║ b ║ 4 ║ ║ 蓝色 ║ b ║ 7 ║ ║ 蓝色 ║ b ║ 1 ║ ║ 蓝色 ║ b ║ 5 ║ ║ 蓝色 ║ b ║ 3 ║ ║ 蓝色 ║ b ║ 2 ║ ╚

═════════════════════════╝尝试获得的结果

╔═════════════╦═══════════════════════
╗ ║ 颜色 ║ 面板 ║ 结果 ║ 分钟 ║ 最大 ║ ╠═══════╬═══════╬════════╬═════╬═════╣ ║ 蓝色 ║ b ║ 4 ║ 4 ║ 4 ║ 4 ║ ║ 蓝色 ║ b ║ 3 ║ 3 ║ 4 ║ ║ 蓝色 ║ b ║ 3 ║ 3 ║ 4 ║ ║ 蓝色 ║ b ║ 5 ║ 3 ║ 5 ║ ║ 蓝色 ║ b ║ 4 ║ 3 ║ 5 ║ ║ 蓝色 ║ b ║ 7 ║ 3 ║ 7 ║ ║ 蓝色 ║ b ║ 1 ║ 1 ║ 7 ║ ║ 蓝色 ║ b ║ 5 ║ 1 ║ 7 ║ ║ 蓝色 ║ b ║ 3 ║ 1 ║ 7 ║ ║ 蓝色 ║ b ║ 2 ║ 1 ║ 7 ║ ╚
════════════════════════════════════╕
data = {'color':['blue','blue','blue','blue','blue','blue','blue','blue','blue','blue'],
'panel':['b','b','b','b','b','b','b','b','b','b'],
'result':[4,3,3,5,4,7,1,5,3,2]}

请指教。谢谢

你想要cummincummax

data.result.cummin()
data.result.cummax()

GroupBy.aggGroupBy.cummax一起使用GroupBy.cummin并分配给新列(这是可能的,因为输出是与原始列大小相同的数据帧):

df[['min','max']] = df.groupby(['color','panel'])['result'].agg(['cummin','cummax'])
print (df)
color panel  result  min  max
0  blue     b       4    4    4
1  blue     b       3    3    4
2  blue     b       3    3    4
3  blue     b       5    3    5
4  blue     b       4    3    5
5  blue     b       7    3    7
6  blue     b       1    1    7
7  blue     b       5    1    7
8  blue     b       3    1    7
9  blue     b       2    1    7

最新更新