是否要添加列A
和列B
並將結果存儲在C
?然後,你可以把它簡單:
df.C = df.A + df.B
由於@EdChum在評論中指出,在apply
的函數參數是一個系列,在默認情況下軸0
這是行(軸1
意味着列):
>>> df.apply(lambda s: s)[:3]
A B C D
0 57.890858 72.344298 16.348960 84.109071
1 85.534617 53.067682 95.212719 36.677814
2 23.202907 3.788458 66.717430 1.466331
在這裏,我們添加的第一個和第二行:
>>> df.apply(lambda s: s[0] + s[1])
A 143.425475
B 125.411981
C 111.561680
D 120.786886
dtype: float64
要在列工作,使用axis=1
關鍵字參數:
>>> df.apply(lambda s: s[0] + s[1], axis=1)
0 130.235156
1 138.602299
2 26.991364
3 143.229523
...
98 152.640811
99 90.266934
其產生相同的結果,通過名稱引用的列:
>>> (df.apply(lambda s: s[0] + s[1], axis=1) ==
df.apply(lambda s: s['A'] + s['B'], axis=1))
0 True
1 True
2 True
3 True
...
98 True
99 True
你的申請因爲默認情況下不工作,它的工作原理列明智的,再加上你誤解了lambda參數實際代表什麼,所以你的lambda func不會像你期望的那樣映射到列。如果你想讓它工作在行上,你需要做這樣的事情''df ['c'] = df.apply(lambda row:row.A + row.B,axis = 1)''但@ miku的答案將達到你想並且更簡單 – EdChum
@EdChum,'df.apply(lambda s:sA + sC,axis = 1)'產生一個'AttributeError:('''''''''''''''''''' 0')'熊貓0.12;但是,'df.apply(lambda s:s ['A'] + s ['C'],axis = 1)'有效。 – miku
@miku並沒有意識到這一點,看起來像一個現在固定在0.12的bug,我個人總是使用'[]',因爲它對我來說更好。感謝您指出了這一點。 – EdChum