Python 使用数据帧向前或向后计算

Python 使用数据帧向前或向后计算,python,pandas,dataframe,Python,Pandas,Dataframe,我想每周计算一个数据帧中的%差异,并将这些计算放在一个新的数据帧中 从df开始: index Date Zone Amount 0 2011-01-08 YQHDK 1691938000.0 1 2011-02-05 YQHDK 1760009000.0 2 2011-03-05 YQHDK 1893000000.0 新数据帧newdf如下所示: index Date Zone % di

我想每周计算一个数据帧中的%差异,并将这些计算放在一个新的数据帧中

df开始

index       Date     Zone      Amount
  0     2011-01-08  YQHDK   1691938000.0
  1     2011-02-05  YQHDK   1760009000.0
  2     2011-03-05  YQHDK   1893000000.0
新数据帧
newdf
如下所示:

index       Date     Zone   % diff
  0     2011-02-05  YQHDK    4.02
  1     2011-03-05  YQHDK    7.56

如何在不经过循环的情况下实现这一点?

您可以这样做:

In [15]: df.Amount.pct_change()*100
Out[15]:
0         NaN
1    4.023256
2    7.556268
Name: Amount, dtype: float64

In [16]: df.Amount.pct_change().shift(-1)*100
Out[16]:
0    4.023256
1    7.556268
2         NaN
Name: Amount, dtype: float64

In [8]: df['pct_diff'] = df.Amount.pct_change()*100

In [9]: df
Out[9]:
   index        Date   Zone        Amount  pct_diff
0      0  2011-01-08  YQHDK  1.691938e+09       NaN
1      1  2011-02-05  YQHDK  1.760009e+09  4.023256
2      2  2011-03-05  YQHDK  1.893000e+09  7.556268

您可以这样做:

In [15]: df.Amount.pct_change()*100
Out[15]:
0         NaN
1    4.023256
2    7.556268
Name: Amount, dtype: float64

In [16]: df.Amount.pct_change().shift(-1)*100
Out[16]:
0    4.023256
1    7.556268
2         NaN
Name: Amount, dtype: float64

In [8]: df['pct_diff'] = df.Amount.pct_change()*100

In [9]: df
Out[9]:
   index        Date   Zone        Amount  pct_diff
0      0  2011-01-08  YQHDK  1.691938e+09       NaN
1      1  2011-02-05  YQHDK  1.760009e+09  4.023256
2      2  2011-03-05  YQHDK  1.893000e+09  7.556268

相邻行之间是否始终采用该比率?(周是什么意思?)每一行都与不同的周相关联,索引1的百分比差异为(1691938000-1760009000)/1691938000相邻行之间的比率是否始终为?(周是什么意思?)每一行都与不同的周相关联,索引1的%diff将是(1691938000-1760009000)/1691938000我可以用一个有多个区域使用groupby的df来做这件事吗?@Lisle,你能用一个例子更新你的问题吗?或者发布一个新问题吗?我可以用一个有多个区域使用groupby的df来做这件事吗?@Lisle,你能用一个例子更新你的问题吗,或者发布一个新问题吗?