[問題] df.apply是否有辦法取得前一列的資料
大家好
小弟在學習dataframe路上,碰到的案例中
會有需要df然後row by row的執行計算的情況
甚至會需要前一列計算出來的結果
先附上範例
import pandas as pd
df=pd.DataFrame(data=[[1, 7], [3, 6], [5, 4]], columns=['A', 'B'])
def d(row):
if row['A'] > row['B']:
return pd.Series((1, row['A']+row['B']))
else:
return pd.Series((0, row['A']-row['B']))
df[['C', 'D']]=df.apply(d, axis=1)
上述我會得到一個
index | A | B | C | D
-----------------------------------------
0 | 1 | 7 | 0 | -6
-----------------------------------------
1 | 3 | 9 | 0 | -3
-----------------------------------------
2 | 5 | 4 | 1 | 9
-----------------------------------------
像這樣的df
但因為我不知如何寫,我希望的是在d這個函式中
若A>B的話,我希望D除了A+B之外,還可以加上前一列的D的數值
以本例為例,我希望式可以在index=2的D欄位中得到6 (即 6 -3)
那我有想過使用for loop的方式,這個問題可以得到解決
可是在我認知中df越大時,用for loop會跑得比單純用apply搭配一個函式還慢
或是我對這方面的認知有誤,若有誤還有待指教
所以在此認知與考量時間下,決定使用apply的方式去計算
但不知道能否用.apply去解決取前一列的值的問題
或是前輩們能否有更好的解決我這個問題的方式,還盼望能提出指點
先謝謝各位願意花時間了解我的問題
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.101.201 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1605446424.A.126.html
推
11/15 23:14,
4年前
, 1F
11/15 23:14, 1F
推
11/15 23:21,
4年前
, 2F
11/15 23:21, 2F
→
11/15 23:21,
4年前
, 3F
11/15 23:21, 3F
→
11/15 23:21,
4年前
, 4F
11/15 23:21, 4F
推
11/18 07:55,
4年前
, 5F
11/18 07:55, 5F
Python 近期熱門文章
PTT數位生活區 即時熱門文章