如何从pandas添加特定的行和列

时间:2015-07-14 14:32:22

标签: pandas dataframe

我有一个如下所示的数据集,但是当我尝试对列进行求和时,它将从年份中求和。我想要的是从1月到12月的总和。

我尝试过的代码是data.sum(axis=0)

Out[64]: 
    year  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
0   1981   32   26   62   22   23   98   80  163   13  122  144  109
1   1982   42   30   54   50  192   37   52   77   48   46   74   52
2   1983   78   10  107   46   36  105   80   25  188   58   36   78
3   1984   72   29   34   11   29   97   67   51  145  114   51   51
4   1985   83   37   42   69   23   25  104   50   76   53   74   63
5   1986   50   12   69   51   77   39  121  234   56   45   54   89
6   1987   23   28   22    4   55   77   92  122   65   34   54   24
7   1988   72   64   40   37   41   51  106  173   36   69   38   66
8   1989    9   28   51   55   38   42   11   68   23   74   55   59
9   1990   74   79   56   46   30   25  128   42  153   79   60   42
10  1991   59   29   41   24   78  142   54  124   71   27   47   37

2 个答案:

答案 0 :(得分:0)

首先过滤列,然后sum

In [274]:
df[df.columns[1:]].sum(axis=0)

Out[274]:
Jan     594
Feb     372
Mar     578
Apr     415
May     622
Jun     738
Jul     895
Aug    1129
Sep     874
Oct     721
Nov     687
Dec     670
dtype: int64

如果你想对行式传递axis=1求和:

In [291]:
df['total'] = df[df.columns[1:]].sum(axis=1)
df

Out[291]:
    year  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec  total
0   1981   32   26   62   22   23   98   80  163   13  122  144  109    894
1   1982   42   30   54   50  192   37   52   77   48   46   74   52    754
2   1983   78   10  107   46   36  105   80   25  188   58   36   78    847
3   1984   72   29   34   11   29   97   67   51  145  114   51   51    751
4   1985   83   37   42   69   23   25  104   50   76   53   74   63    699
5   1986   50   12   69   51   77   39  121  234   56   45   54   89    897
6   1987   23   28   22    4   55   77   92  122   65   34   54   24    600
7   1988   72   64   40   37   41   51  106  173   36   69   38   66    793
8   1989    9   28   51   55   38   42   11   68   23   74   55   59    513
9   1990   74   79   56   46   30   25  128   42  153   79   60   42    814
10  1991   59   29   41   24   78  142   54  124   71   27   47   37    733

答案 1 :(得分:0)

只需删除年份列并将月份列相加:

data.drop('year', axis=1).sum(axis=1)

但我猜你想要保留每笔金额的年份信息。更好的方法是将年份列设置为索引和总和:

data.set_index('year').sum(axis=1)