我对使用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 |
+---+------+--------+-------+
到目前为止,我还没有找到一种有效的方法来做到这一点。 (甚至是一种有效的方法。)
我将要处理数十万行,因此我需要找到一种非常有效的方法。
答案 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'])
希望有帮助。