[英]Getting min and max after every row in padas dataframe
i'm trying to create columns to represent min/max after every row within a group.我正在尝试在组中的每一行之后创建列来表示最小值/最大值。
original df原始文件
╔═══════╦═══════╦════════╗ ║ color ║ panel ║ result ║ ╠═══════╬═══════╬════════╣ ║ blue ║ b ║ 4 ║ ║ blue ║ b ║ 3 ║ ║ blue ║ b ║ 3 ║ ║ blue ║ b ║ 5 ║ ║ blue ║ b ║ 4 ║ ║ blue ║ b ║ 7 ║ ║ blue ║ b ║ 1 ║ ║ blue ║ b ║ 5 ║ ║ blue ║ b ║ 3 ║ ║ blue ║ b ║ 2 ║ ╚═══════╩═══════╩════════╝
result trying to get试图得到的结果
╔═══════╦═══════╦════════╦═════╦═════╗ ║ color ║ panel ║ result ║ min ║ max ║ ╠═══════╬═══════╬════════╬═════╬═════╣ ║ blue ║ b ║ 4 ║ 4 ║ 4 ║ ║ blue ║ b ║ 3 ║ 3 ║ 4 ║ ║ blue ║ b ║ 3 ║ 3 ║ 4 ║ ║ blue ║ b ║ 5 ║ 3 ║ 5 ║ ║ blue ║ b ║ 4 ║ 3 ║ 5 ║ ║ blue ║ b ║ 7 ║ 3 ║ 7 ║ ║ blue ║ b ║ 1 ║ 1 ║ 7 ║ ║ blue ║ b ║ 5 ║ 1 ║ 7 ║ ║ blue ║ b ║ 3 ║ 1 ║ 7 ║ ║ blue ║ 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]}
kindly advise.好心提醒。 thank you
谢谢你
Use GroupBy.agg
with GroupBy.cummax
and GroupBy.cummin
and assign to new columns (it is possible, because output is DataFrame with same size like original):将
GroupBy.agg
与GroupBy.cummax
和GroupBy.cummin
并分配给新列(这是可能的,因为输出是与原始大小相同的 DataFrame):
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.