python:总结每个类别的最后一个和最大的单元格
Posted
技术标签:
【中文标题】python:总结每个类别的最后一个和最大的单元格【英文标题】:python: sum last and largest cells for each category 【发布时间】:2021-09-08 00:23:13 【问题描述】:给定这个数据框,我想为“x”中的每个类别提取和求和“y”中的最后一个单元格。 例如,“x”中类别 A 的“y”中的最后一个单元格是 4,B 是 5,C 是 8, 因此,我想看到 4 + 5+ 8= 17。 我怎么做?如果我想对每个类别的最大数字求和怎么办?所以在这种情况下,它将是 A 中最大的 (5) + B 中最大的 (9) + C 中最大的 (8)。
import numpy as np
import pandas as pd
data=[['A', 1,2 ,5, 'blue'],
['A', 5,5,6, 'blue'],
['A', 4,6,7, 'blue']
,['B', 6,5,4,'yellow'],
['B',9,9,3, 'blue'],
['B', 7,9,1,'yellow']
,['B', 2,3,1,'yellow'],
['B', 5,1,2,'yellow'],
['C',2,10,9,'green']
,['C', 8,2,8,'green'],
['C', 5,4,3,'green'],
['C', 8,5 ,3,'green']]
df = pd.DataFrame(data, columns=['x','y','z','xy', 'color'])
【问题讨论】:
【参考方案1】:无论哪种方式,您都需要groupby
:
>>> df.groupby("x")["y"].last().sum()
17
>>> df.groupby("x")["y"].max().sum()
22
【讨论】:
合并它们df.groupby("x")["y"].agg(['last','max']).sum()
是的,但我认为问题的结构方式听起来像是两个不同的问题!以上是关于python:总结每个类别的最后一个和最大的单元格的主要内容,如果未能解决你的问题,请参考以下文章