如何在pandas dataframe中将当前行减去前一行,并将其应用于每一行,而不使用循环?

22 浏览
0 Comments

如何在pandas dataframe中将当前行减去前一行,并将其应用于每一行,而不使用循环?

我正在使用Python3.5和pandas进行工作。我从雅虎财经加载了股票数据,并将文件保存为csv格式。我的数据框(DataFrame)从这个csv文件中加载数据。以下是csv文件的十行数据,也是我的数据框的副本:

  日期        开盘价       最高价       最低价     收盘价    成交量      调整后收盘价
1990-04-12  26.875000  26.875000  26.625  26.625      6100  250.576036
1990-04-16  26.500000  26.750000  26.375  26.750       500  251.752449
1990-04-17  26.750000  26.875000  26.750  26.875      2300  252.928863
1990-04-18  26.875000  26.875000  26.500  26.625      3500  250.576036
1990-04-19  26.500000  26.750000  26.500  26.750       700  251.752449
1990-04-20  26.750000  26.875000  26.750  26.875      2100  252.928863
1990-04-23  26.875000  26.875000  26.750  26.875       700  252.928863
1990-04-24  27.000000  27.000000  26.000  26.000      2400  244.693970
1990-04-25  25.250000  25.250000  24.875  25.125      9300  236.459076
1990-04-26  25.000000  25.250000  24.750  25.000      1200  235.282663

我知道我可以使用iloc、loc、ix来索引值,但是这些值只会给出特定的行和列,并不会对每一行执行操作。

例如:数据中开盘价的第一行的值是26.875,它下面的行是26.50。价格下降了0.375美分。我想要计算从前一天到下一天的增长或减少的百分比。所以,以这个例子来结束,0.375除以26.875等于1.4%的下降。我想要能够对每一行运行这个计算,这样我就知道它与前一天相比增加或减少了多少。我尝试过索引函数,但它们是绝对的,并且我不想使用循环。是否有一种方法可以使用ix、iloc、loc或其他函数来实现这个目的?

0