【发布时间】:2020-06-26 04:10:49
【问题描述】:
在 python 中,我如何引用前一行并针对它进行计算?具体来说,我正在与pandas 中的dataframes 合作 - 我有一个充满股票价格信息的数据框,如下所示:
Date Close Adj Close
251 2011-01-03 147.48 143.25
250 2011-01-04 147.64 143.41
249 2011-01-05 147.05 142.83
248 2011-01-06 148.66 144.40
247 2011-01-07 147.93 143.69
这是我创建此数据框的方式:
import pandas
url = 'http://ichart.finance.yahoo.com/table.csv?s=IBM&a=00&b=1&c=2011&d=11&e=31&f=2011&g=d&ignore=.csv'
data = data = pandas.read_csv(url)
## now I sorted the data frame ascending by date
data = data.sort(columns='Date')
从第 2 行开始,或者在这种情况下,我猜它是 250(PS - 那是索引吗?),我想为每个条目计算 2011-01-03 和 2011-01-04 之间的差异在这个数据框中。我相信适当的方法是编写一个获取当前行的函数,然后计算前一行,并计算它们之间的差异,使用 pandas apply 函数用值更新数据框。
这是正确的方法吗?如果是这样,我应该使用索引来确定差异吗? (注意 - 我仍然处于 python 初学者模式,所以 index 可能不是正确的术语,甚至不是正确的实现方式)
【问题讨论】:
-
仅仅找到两个日期的行并计算它们之间的差异是不够的..?
-
@redShadow 有趣的想法。我没有这样想过。我看到的唯一问题是您将如何处理周末?有 252 个交易日,不是 365 个。如果你尝试上涨 1 天,并且是周末,该功能将失败。虽然,我想你可以在函数中进行一些错误处理......
-
不,等等.. 你到底想完成什么?为数据集中的所有记录计算每一天与前一天的差异......?
-
@redShadow 完全正确。逐行,与前一天的差异。第一行将是 0,所以我必须弄清楚一些错误处理,但是......