功能近日,我從SAS轉換到Python大熊貓。我的一個問題是大熊貓在SAS中有一個類似於保留的功能,以便我可以動態地引用最後一條記錄。在下面的代碼中,我必須手動循環每一行並引用最後一條記錄。與類似的SAS程序相比,它似乎很慢。無論如何,這使得熊貓更有效率嗎?謝謝。保留在python
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 1, 1, 1], 'B': [0, 0, 1, 0]})
df['C'] = np.nan
df['lag_C'] = np.nan
for row in df.index:
if row == df.head(1).index:
df.loc[row, 'C'] = (df.loc[row, 'A'] == 0) + 0
else:
if (df.loc[row, 'B'] == 1):
df.loc[row, 'C'] = 1
elif (df.loc[row, 'lag_C'] == 0):
df.loc[row, 'C'] = 0
elif (df.loc[row, 'lag_C'] != 0):
df.loc[row, 'C'] = df.loc[row, 'lag_C'] + 1
if row != df.tail(1).index:
df.loc[row +1, 'lag_C'] = df.loc[row, 'C']
您應該在cython/numba中進行矢量化或編寫。國際海事組織你的代碼是很難推理,但我懷疑有一個可讀/高效的解決方案... –
你可以簡單地說你想達到什麼,即什麼是預期的結果? – miraculixx
如果我幫你,你可以投票並[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)答案(S)。 [更多信息](http://stackoverflow.com/tour) – jezrael