DPC*_*tto 5 python group-by pivot-table dataframe pandas
我正在尝试找出对数据进行简单处理的最佳方法:
import pandas
dfn = pandas.DataFrame({
"A" : [ 'aaa', 'bbb', 'aaa', 'bbb' ],
"B" : [ 1, 10, 2, 30 ],
"C" : [ 2, 0, 3, 20 ] })
Run Code Online (Sandbox Code Playgroud)
我想有输出是一个数据帧,通过分组A,即总和和计数值B和C,和名称必须是完全(Sum_B,Sum_C,Count),如下:
A Sum_B Sum_C Count
aaa 3 5 2
bbb 50 20 2
Run Code Online (Sandbox Code Playgroud)
最快的方法是什么?
你可以使用.agg()函数:
In [227]: dfn.groupby('A').agg({'B':sum, 'C':sum, 'A':'count'}).rename(columns={'A':'count'})
Out[227]:
B count C
A
aaa 3 2 5
bbb 40 2 20
Run Code Online (Sandbox Code Playgroud)
或与reset_index():
In [239]: dfn.groupby('A').agg({'B':sum, 'C':sum, 'A':'count'}).rename(columns={'A':'count'}).reset_index()
Out[239]:
A B count C
0 aaa 3 2 5
1 bbb 40 2 20
Run Code Online (Sandbox Code Playgroud)
执行此操作的一种方法是按所需的列进行分组,然后进行求和,如下所示。
r = dfn.groupby('A').sum()
r['counts'] = dfn.A.value_counts() # this could also be written as dfn['A'].value_counts()
Run Code Online (Sandbox Code Playgroud)
第一行计算总和,第二行获取每个值在 A 中出现的次数。
| 归档时间: |
|
| 查看次数: |
3157 次 |
| 最近记录: |