我创建了股票信息的数据框架,如“打开”、“高”、“关闭”等。现在,我需要计算股票的每一行(dataFrame中的每一行)的性能。我想在dataFrame中创建一个新列,它等于下一行的“关闭”列--上一行的“关闭”列值。
我尝试将close列值按第2行划分,并将这个新的close列值划分为自己的列。然后创建一个新的列,用第一列减去第二列,但是它们是处理NaN值的问题。
df['performance'] = df.Close[2] - df.Close[1]这使得52767行中的每一行的性能都等于"2.5“。
我想做一个专栏“性能”来迭代它。例如,如果行0的关闭值为5,第1行的关闭值为7,则行0的性能值应为2,这是对52767行执行的。
发布于 2019-07-17 17:13:06
pandas.Series.diff()
您可以使用.diff()和一个周期的-1来计算与下一行的差异(与前一行不同的正常行为)。例如:
# Example data
df = pd.read_csv("https://vincentarelbundock.github.io/Rdatasets/csv/fpp2/goog200.csv", index_col=0).head(10)
# Calculate difference
df['performance'] = df['value'].diff(-1)收益率
time value performance
1 1 392.830017 0.317932
2 2 392.512085 -4.793823
3 3 397.305908 -0.705414
4 4 398.011322 -2.478882
5 5 400.490204 -7.605530
6 6 408.095734 -8.494751
7 7 416.590485 3.586670
8 8 413.003815 -0.606048
9 9 413.609863 0.536499
10 10 413.073364 NaNhttps://stackoverflow.com/questions/57081039
复制相似问题