pandas中列的条件求和

时间:2015-04-26 06:59:02

标签: python pandas

我在Pandas中有以下数据库:

Student-ID   Last-name   First-name  HW1  HW2  HW3  HW4  HW5  M1   M2  Final
59118211           Alf        Brian   96   90   88   93   96  78   60   59.0
59260567      Anderson         Jill   73   83   96   80   84  80   52   42.5
59402923     Archangel      Michael   99   80   60   94   98  41   56    0.0
59545279         Astor         John   93   88   97  100   55  53   53   88.9
59687635        Attach         Zach   69   75   61   65   91  90   63   69.0

我想只添加那些包含“HW”的列。关于我如何做到这一点的任何建议?

注意:包含HW的列数可能不同。所以我不能直接引用它们。

2 个答案:

答案 0 :(得分:2)

您可以df.filter(regex='HW')返回列名,例如' HW'然后通过sum(axis-1)

按行排序
In [23]: df
Out[23]:
   StudentID   Lastname Firstname  HW1  HW2  HW3  HW4  HW5  HW6  HW7   M1
0   59118211        Alf     Brian   96   90   88   93   96   97   88   10
1   59260567   Anderson      Jill   73   83   96   80   84   99   80  100
2   59402923  Archangel   Michael   99   80   60   94   98   73   97   50
3   59545279      Astor      John   93   88   97  100   55   96   86   60
4   59687635     Attach      Zach   69   75   61   65   91   89   82   55
5   59829991       Bake      Jake   56    0   77   78    0   79    0   10

In [24]: df.filter(regex='HW').sum(axis=1)
Out[24]:
0    648
1    595
2    601
3    615
4    532
5    290
dtype: int64

答案 1 :(得分:1)

John的解决方案 - 使用df.filter() - 更优雅,但你也可以考虑列表理解......

df[[x for x in df.columns if 'HW' in x]].sum(axis=1)