根据另一列的值应用pct_change

时间:2017-12-12 20:30:49

标签: python pandas

以下数据框包含Price和天数据:

Date        Price       Days    
1999-01-06  1.336646    NaN
1999-01-07  1.440696    NaN
1999-01-08  1.440696    NaN
1999-01-11  1.468710    2.0
1999-01-12  1.476714    1.0

我的预期输出是为第三列提供网络' ,这是pct_change的价格,但有相对于' Days'专栏。

例如,第一个' Net'将是df['Price'].pct_change(2),第二个是df['Price'].pct_change(1)等。

有没有办法在当前列计算中应用lambda来包含另一列的值?

1 个答案:

答案 0 :(得分:0)

有点脏,但你可以这样做:

df["pct"] = np.nan
for (i,row) in df.iterrows():
    if not pd.isnull(row.Days):
        try:
            pct = (row.Price - df.iloc[int(i-row.Days)].Price) / df.iloc[int(i-row.Days)].Price
            df.ix[i,"pct"] = pct
        except:
            pass