我試圖驗證我創建的lambda函數是否正確,因此我添加了添加列(max_value,min_value,diff)來驗證我的數值lambda函數是正確的。如何將.apply()lambda函數應用於DataFrame中的受限列設置
但是當我這樣做時,我注意到在評估過程中產生的lambda表達式包含了這些新列,結果diff和lambda列是不正確的。
- 如何限制.apply()函數列
b, d, e
? - 或者,是否可以限制lambda函數? (不知道這是合乎邏輯的)
代碼:
import numpy as np
from pandas import DataFrame
frame = DataFrame(np.random.randn(4, 3), columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
f = lambda x: x.max() - x.min()
frame['max_value'] = np.max(frame, axis=1)
frame['min_value'] = np.min(frame, axis=1)
frame['diff'] = frame.max_value - frame.min_value
frame['lambda'] = frame.apply(f, axis=1)
frame
結果:
Out[30]:
b d e max_value min_value diff lambda
Utah 0.382063 -1.026674 -2.706572 0.382063 -2.706572 3.088636 5.795208
Ohio 1.718023 -0.446802 -0.345996 1.718023 -0.446802 2.164825 2.611627
Texas 0.809239 -0.761325 -1.253476 0.809239 -1.253476 2.062715 3.316191
Oregon -1.722270 0.438120 -0.619916 0.438120 -1.722270 2.160390 3.882659
請不要做名單('bde'),那不是Pythonic! –
@DiegoMoraCespedes正如我所說的,這是OP使用的方法,而且我這樣做是爲了讓上下文更加熟悉。對不起,你覺得它很冒犯。 –