![](/img/trans.png)
[英]How to pass the value of previous row to the dataframe apply function?
[英]Apply function to dataframe row which references previous row's data
我正在嘗試根據上一行的先前值設置我的 dataframe 的 col 'b'。 有沒有辦法在不遍歷行或對 pd.apply function 使用裝飾器的情況下做到這一點?
偽代碼:
if row != 0:
curr_row['b'] = prev_row['b'] + curr_row['a']
else:
curr_row['b'] = curr_row['a']
這是我嘗試過的:
df = pd.DataFrame({'a': [1,2,3,4,5],
'b': [0,0,0,0,0]})
df.b = df.apply(lambda row: row.a if row.name < 1 else (df.iloc[row.name-1].b + row.a), axis=1)
output:
a b
0 1 1
1 2 2
2 3 3
3 4 4
4 5 5
所需的 output:
a b
0 1 1
1 2 3
2 3 6
3 4 10
4 5 15
如果我在新的df上第二次運行apply function c 的另一行值是正確的:
a b
0 1 1
1 2 3
2 3 5
3 4 7
4 5 9
如果我繼續重新運行應用 function 直到 output 正確,則此模式將繼續。
我猜這個問題與應用 function 的工作原理有關,當您使用“應用”同一列的值時,它會中斷。 那或者我只是在某種程度上是個白痴(非常合理)。 有人可以解釋一下嗎?
我必須使用裝飾器來存儲前一行還是有更清潔的方法來做到這一點?
你的要求是cumsum()
df = pd.DataFrame({'a': [1,2,3,4,5],
'b': [0,0,0,0,0]})
df.assign(b=df.a.cumsum())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.