【问题标题】:Python Pandas, using the previous value in DataframePython Pandas,使用 Dataframe 中的先前值
【发布时间】:2014-07-22 16:08:54
【问题描述】:

我有一个使用 b(t-1) 变量的函数,例如:

def test_b(a,b_1):
     return a + b_1

假设以下数据框:

df = pd.DataFrame({'a':[1,2,3],'b':np.nan})

我正在分配 b_1 初始值:

df['b'].ix[0]=0

然后(使用我的 Matlab 经验),我使用循环:

for i in range(1,len(df)):
    df['b'].ix[i] = test_b(df['a'].ix[i],df['b'].ix[i-1])

输出:

  a|b
0|1|0
1|2|2
2|3|5

这是一种更优雅的方式吗?

【问题讨论】:

  • 显示你想要的输出结果
  • 杰夫,我得到了我想要的输出。我只是想看看 pandas 是否存在另一种方式,例如 apply 或 shift。我试过了,但我想不通
  • 不,我的意思是最好在问题中实际显示输出

标签: python pandas


【解决方案1】:

你永远不想做这样的任务,因为这是chained indexing

这是一个循环关系,因此 ATM 以超高性能的方式执行此操作并不容易,但请参阅 here

【讨论】:

  • for x in df.index[1:]: df.loc[x, 'b'] = df.loc[x, 'a'] + df.loc[x - 1, 'b']..... 这也很糟糕吗?我从来没有完全了解这个问题......
  • 但我害怕它!
  • 没关系,但在大框架上会很慢(最好创建一个列表然后一次全部分配)
猜你喜欢
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 2022-11-02
  • 2018-12-05
  • 2020-06-25
  • 2021-03-19
  • 2022-09-23
相关资源
最近更新 更多