汇总所有列-按1列分组

时间:2019-09-17 22:30:04

标签: python python-3.x

我一直无法通过搜索找到它,但是我要做的是将数据帧的所有列求和,然后按1列(日期)分组。我的数据在整个月份都具有重复性,我想对所有列进行汇总,因此每个月都会出现一次。

a      b     c    d  
jan    1     2   1
feb    5     3   -1
mar    0    -1   0
jan    10    7   4
feb    1     5   7
mar    9     -2   8

我希望实现的输出是:

a      b     c    d  
jan    11    9   5
feb    6     8   6
mar    9    -3   8

我已经尝试过:t2.groupby(['Date'])['Number Installed'].sum().reset_index()

我可以为每列做,但我有23列,并且不想这样做。是否有对此的更简单答案?

3 个答案:

答案 0 :(得分:2)

您可以使用GroupBy.sum

sum_month=t2.groupby('a').sum()
print(sum_month)

      b  c  d
a            
feb   6  8  6
jan  11  9  5
mar   9 -3  8

如果您希望它完全按照输出中的排序,请使用sort = False

sum_month=t2.groupby('a',sort=False).sum()
print(sum_month)

      b  c  d
a            
jan  11  9  5
feb   6  8  6
mar   9 -3  8

答案 1 :(得分:0)

从您提供的数据帧示例开始,以下代码将起作用:

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Comparator;

import models.CryptoDto;
import scala.Tuple2;

public class CryptoVolumeComparator implements Comparator<Tuple2<BigDecimal, CryptoDto>>, Serializable {
    private static final long serialVersionUID = 1L;
    @Override
    public int compare(Tuple2<BigDecimal, CryptoDto> v1, Tuple2<BigDecimal, CryptoDto> v2) {
        return  v2._1().compareTo(v1._1());
    }
}

答案 2 :(得分:0)

如果要汇总 所有 列,则只需要以下内容:

import pandas as pd

a = {'a':['jan','feb','mar','jan','feb','mar'],'b':[1,5,0,10,1,9],'c':[2,3,-1,7,5,-2],'d':[1,-1,0,4,7,8]}
df = pd.DataFrame(a)

grouped_df = df.groupby('a').sum())
print(grouped_df)

通过传递.sum()作为聚合函数,默认情况下它将汇总所有分组的列,如果传递某个列或数组,则它将对指定的列执行sum。 输出:

      b  c  d
a
feb   6  8  6
jan  11  9  5
mar   9 -3  8