我有一个这样的数据框,
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
'
'
有什么方法可以不使用熊猫循环吗?
答案 0 :(得分:2)
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