首页 > 解决方案 > 如何使用匹配值对数据进行分组

问题描述

我是使用 Pandas 的新手,我正在尝试重构数据框以删除第一列中的重复项,同时保留每个重复项的数量,并在第二列中取值的总和。

例如,我希望转换看起来像这样:

[在]:

+---+------+-------+
|   | Name | Value |
+---+------+-------+
| 0 | A    |     5 |
| 1 | B    |     5 |
| 2 | C    |    10 |
| 3 | A    |    15 |
| 4 | A    |     5 |
| 5 | C    |    10 |
+---+------+-------+

[出去]:

+---+------+--------+-------+
|   | Name | Number | Total |
+---+------+--------+-------+
| 0 | A    |      3 |    25 |
| 1 | B    |      1 |     5 |
| 2 | C    |      2 |    20 |
+---+------+--------+-------+

到目前为止,我还没有找到一种有效的方法来做到这一点。(甚至是一种工作方法。)

我将处理几十万行,所以我需要找到一个非常有效的方法。

标签: pythonpandas

解决方案


groupby 上的 pandas agg 功能就是您想要的。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.agg.html

这是一个例子:

import pandas as pd

df=pd.DataFrame({'Name':['A','B','C','A','A','C'],
                 'Value':[5,5,10,15,5,10]})

df.groupby('Name').agg(['count','sum'])

希望有帮助。


推荐阅读