我试图获得一个新的df列“ dos”,该列从100开始,然后此后的每个单元格将其上的数字乘以“ uno”中的相应单元格。由于某种原因,它只是在100后给我NaN。

GrVsVal = pd.DataFrame(columns = ['uno', 'dos'], index = df_ch.index)
GrVsVal['uno'] = 1 + (df_ch['IVV'] - df_ch['IVE'])
GrVsVal['dos'].ix[0] = 100
GrVsVal['dos'].ix[1:] = GrVsVal['uno'].ix[1:] * GrVsVal['dos'].ix[0:]

print GrVsVal


它给了我:

          uno     dos
Date
1/2/12   .997     100
1/3/12   .677     NaN
1/4/12   .986     NaN


因此第一个NaN应该是100 * .677,第二个NaN应该是第一个NaN * .986的结果

最佳答案

GrVsVal = pd.DataFrame({'uno': 1 + df_ch['IVV'] - df_ch['IVE']}, index = df_ch.index)

GrVsVal['dos'] = 100
GrVsVal.loc[1:, 'dos'] = GrVsVal.uno[1:].cumprod() * 100
>>> GrVsVal
          uno       dos
  Date
1/2/12  0.997  100.0000
1/3/12  0.677   67.7000
1/4/12  0.986   66.7522

关于python - 通过上面的单元格乘以创建具有公式的 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37288299/

10-12 21:58