这里我有股票的开盘价和收盘价:
Open Close
1994.988 1994.988
2020.8496 2006.1270142499998
2050.030029 2017.3700764583332
2041.51001 2039.3920492708332
2062.52002 2057.9604493541665
2055.469971 2058.56656934375
2046.73998 2059.327636895833
现在,我必须创建一个新列“ Percent_Change”,其计算方式为 (关闭-打开)/打开。
应该对前一天的值进行计算,因此第一行将是Nan,然后是0,依此类推...
Per_Change
NaN
0
-0.73%
-1.59%
-0.10%
-0.22%
0.15%
0.62%
答案 0 :(得分:1)
您可以使用pd.Series.shift
来改变结果:
df['PctChange'] = ((df['Close'] - df['Open']) / df['Close']).shift()
print(df)
Open Close PctChange
0 1994.988000 1994.988000 NaN
1 2020.849600 2006.127014 0.000000
2 2050.030029 2017.370076 -0.007339
3 2041.510010 2039.392049 -0.016189
4 2062.520020 2057.960449 -0.001039
5 2055.469971 2058.566569 -0.002216
6 2046.739980 2059.327637 0.001504
由于数据框索引/长度不变,因此预期结果的最后一行肯定会丢失。
答案 1 :(得分:0)
def compute_precent(row):
return(float(row[1]-row[0])/row[0])
df['percentage_change']=df.apply(lambda x:compute_precent(x),axis=1)