如何使用匹配值对数据进行分组

时间:2019-04-04 18:36:27

标签: python pandas

我对使用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 |
+---+------+--------+-------+

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

我将要处理数十万行,因此我需要找到一种非常有效的方法。

1 个答案:

答案 0 :(得分:2)

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'])

希望有帮助。