我试图获得一个新的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/