计算熊猫数据框列不使用for循环

时间:2020-07-09 10:21:03

标签: python pandas

我有一个这样的数据框,

Date        Open    High to Low   X
27-Feb-15   A           P         x1
26-Feb-15   B           Q         x2
25-Feb-15   C           R         x3
24-Feb-15   D           S         x4

我需要像下面那样计算X列值,

x1 = (P+Q)/B
x2 = (Q+R)/C
   '
   '

有什么方法可以不使用熊猫循环吗?

1 个答案:

答案 0 :(得分:2)

使用Rolling.sum除以Series.div

print (df)
        Date  Open  High to Low   X
0  27-Feb-15    10            1  x1
1  26-Feb-15    20            2  x2
2  25-Feb-15    50            3  x3
3  24-Feb-15   100            4  x4

df['X'] = df['High to Low'].rolling(2).sum().div(df['Open'])
print (df)
        Date  Open  High to Low     X
0  27-Feb-15    10            1   NaN
1  26-Feb-15    20            2  0.15
2  25-Feb-15    50            3  0.10
3  24-Feb-15   100            4  0.07

如有必要,请添加Series.shift

df['X'] = df['High to Low'].rolling(2).sum().div(df['Open']).shift(-1)
print (df)
        Date  Open  High to Low     X
0  27-Feb-15    10            1  0.15
1  26-Feb-15    20            2  0.10
2  25-Feb-15    50            3  0.07
3  24-Feb-15   100            4   NaN