python - 如何在pandas数据框中按特定条件进行分组

标签 python pandas dataframe group-by sum

我有这样的数据框

    A   B
0   1   a
1   2   a
2   3   b
3   4   b
4   5   a

我想得到下面的结果(1行*4列数据框),

A_count_all means the number of rows in dataframe   df.A.count()

A_sum_all means the df.A.sum()

A_count_a is df.loc[df.B==a,"A"].count()

A_sum_a is df.loc[df.B==a,"A"].sum()


    A_count_all   A_sum_all  A_count_a   A_sum_a  
0      5            15          3            8

我怎样才能得到这个结果数据框?

最佳答案

您可以使用DataFrame构造函数:

A_count_all = df.A.count()
A_sum_all = df.A.sum()
A_count_a = df.loc[df.B=='a',"A"].count()
A_sum_a = df.loc[df.B=='a',"A"].sum()

print (pd.DataFrame({'A_count_all':A_count_all, 
                     'A_sum_all':A_sum_all,
                     'A_count_a':A_count_a,
                     'A_sum_a':A_sum_a},
                      index=[0],
                      columns=['A_count_all','A_sum_all','A_count_a','A_sum_a']))

   A_count_all  A_sum_all  A_count_a  A_sum_a
0            5         15          3        8

谢谢Kris另一种解决方案:

print (pd.DataFrame(data=[[df.A.count(),
                          df.A.sum(),
                          df.loc[df.B=='a',"A"].count(),
                          df.loc[df.B=='a',"A"].sum()]],
                          columns=['A_count_all','A_sum_all','A_count_a','A_sum_a']))

   A_count_all  A_sum_all  A_count_a  A_sum_a
0            5         15          3        8

关于python - 如何在pandas数据框中按特定条件进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39332665/

相关文章:

python - Dask 数据帧 : reading multiple files & storing filename in column

r - 根据 colname 列表排序

python - 在数据框的单个列上进行 Pandas 逻辑索引以分配值

python - 在 python 中对分组的行执行操作

python - 让 Python 的 coverage.py 收集导入它的模块的覆盖率?

Python Pandas - loc 创建 fortran 有序 numpy 数组

python - 迭代 pandas 数据帧的索引

python - PIL : can't save the jpg pasted with a png

python-3.x - Python dataFrame 获取同一列中的所有排列

python-3.x - 如何绘制连接条形图顶部的线