有没有一种简单的方法可以使用每第n行熊猫数据帧进行计算?

时间:2019-01-24 22:48:42

标签: python pandas dataframe

我有一个数据框,其中包含州名称和12月产品的每日价格(注意:该数据中没有周末/节假日数据)。看起来像这样:

Input Data


对于每个州,我想计算产品价格3天的变化。我尝试过类似的方法来计算价格变化:

days=3

for k in df["name"].unique():
      test_df=df[df["name"]==k]
      test_df=test_df.reset_index(drop=True)
      test_df["3_chg"]=np.nan


    for i in range(0,test_df.shape[0]-days):
        test_df["3_chg"].iloc[i]=(test_df.iloc[i]["product_price"]/test_df.iloc[i+days]["product_price"])-1

输出看起来像这样:

Output

我正在使用我的代码获得所需的输出。但是,我想知道是否有更有效的方法来进行相同的计算。我的代码对一小部分数据采样速度很快,但是,如果我对所有50个州使用该数据,则将花费大量时间。

如果有其他选择,请告诉我。谢谢

1 个答案:

答案 0 :(得分:1)

使用shift

df['3_change']=(df['product_price']-df.groupby('name')['product_price'].shift(3))/df['product_price']