首页 > 解决方案 > 有没有办法在没有循环的情况下引用 Pandas 列中的先前值?

问题描述

例如,如果我想要

df = pd.DataFrame(index=range(5000)
df[‘A’]= 0
df[‘A’][0]= 1
for i in range(len(df):
    if i != 0: df['A'][i] = df['A'][i-1] * 3

有没有办法在没有循环的情况下做到这一点?

标签: pythonpandasdataframe

解决方案


  • 您的代码示例缺少右括号并且引号无效。修复了这些
  • 如果我了解您要实现的目标,请将先前的值乘以 3,其中第 0 个数字是 1
    • 将系列初始化为 3,然后将第零项设置为 1
    • 然后简单使用cumprod
  • 缩短您的系列,因为此计算将迅速导致数字溢出
df = pd.DataFrame(index=range(20))
df["A"]= 3
df.loc[0,"A"] = 1
df["A"] = df["A"].cumprod()
一种
0 1
1 3
2 9
3 27
4 81
5 243
6 729
7 2187
8 6561
9 19683
10 59049
11 177147
12 531441
13 1.59432e+06
14 4.78297e+06
15 1.43489e+07
16 4.30467e+07
17 1.2914e+08
18 3.8742e+08
19 1.16226e+09

推荐阅读