彼此添加两列

时间:2018-09-17 05:05:12

标签: python pandas

假设这是我的df,我正在寻找一种将一列与另一列添加的方法。 例如: 除"col a"外,其他所有东西都应相互添加 colb + colc, cold + cole, colf + colg, colh + coli

        a       b    c      d       e       f      g       h        i
group                                   
   A    0.15    0.1  0.1    0.15    0.15    0.1    0.1    0.10      0.05
   B    0.13    NaN  NaN    NaN     0.40    0.2    NaN    0.13      0.06

所需的输出:

          a      b      d        f      h    
group                                   
   A    0.15    0.2    0.30     0.2    0.15    
   B    0.13    NaN    0.40     0.2    0.19     

我知道我可以手动添加两个列,但是我正在寻找一种更简单的方法或一个Apply函数来实现输出。

我找不到办法。有帮助吗?

1 个答案:

答案 0 :(得分:2)

使用addDataFrame中的shift,而没有第一列被iloc选择或被drop删除,最后一个按列名称列表过滤: / p>

cols = ['a','b','d','f','h']
df = df.add(df.iloc[:, 1:].shift(-1,axis=1), fill_value=0)[cols]

替代:

df = df.add(df.drop('a', axis=1).shift(-1,axis=1), fill_value=0)[cols]

print (df)
          a    b    d    f     h
group                           
A      0.15  0.2  0.3  0.2  0.15
B      0.13  NaN  0.4  0.2  0.19