- 将列添加到pandas数据帧中,该数据帧是另一列中3个不同行的总和,并将这些行向下滑动,就像在excel中一样

时间:2017-12-09 17:55:38

标签: pandas dataframe

我有一个数据框,如:

   a  b  c  
0  1  2  3 
1  4  5  6
2  7  8  9
3 10 11 12
4 13 14 15
5 16 17 18 
6 19 20 21
7 22 23 24
8 25 26 27 

我想添加一列d,它是A行0,A列2行和A行5行的总和。

我想出了怎么做:

df['d']=df.loc[0,'a'] + df.loc[2,'a'] + df.loc[5,'a']

但结果是静态d仅与那些行相关联。我想要一个动态d,这样列d,第2行是第a列,第1行,第a列,第3行和第a列第6行的总和。

最终结果应为:

   a  b  c  d
0  1  2  3 24
1  4  5  6 33
2  7  8  9 42
3 10 11 12 ---And so on
4 13 14 15 ---
5 16 17 18 --- 
6 19 20 21 ---
7 22 23 24 ---
8 25 26 27 ---

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

这是shift

df.a+df.a.shift(-2)+df.a.shift(-5)
Out[412]: 
0    24.0
1    33.0
2    42.0
3    51.0
4     NaN
5     NaN
6     NaN
7     NaN
8     NaN
Name: a, dtype: float64

df['d']=df.a+df.a.shift(-2)+df.a.shift(-5)
df
Out[414]: 
    a   b   c     d
0   1   2   3  24.0
1   4   5   6  33.0
2   7   8   9  42.0
3  10  11  12  51.0
4  13  14  15   NaN
5  16  17  18   NaN
6  19  20  21   NaN
7  22  23  24   NaN
8  25  26  27   NaN