要將自定義或其餘庫的函數應用於Pandas對象,有三個重要的方法,下面來討論如何使用這些方法。使用適當的方法取決於函數應用於哪一個層面(DataFrame
,行或列或元素)。python
pipe()
apply()
applymap()
DataFrame
執行操做能夠經過將函數和適當數量的參數做爲管道參數來執行自定義操做shell
import pandas as pd import numpy as np # adder函數將兩個數值做爲參數相加並返回總和 def adder(ele1,ele2): return ele1+ele2 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.pipe(adder,2) # 如今將使用自定義函數對DataFrame進行操做 print(df)
輸出結果:數組
col1 col2 col3 0 2.176704 2.219691 1.509360 1 2.222378 2.422167 3.953921 2 2.241096 1.135424 2.696432 3 2.355763 0.376672 1.182570 4 2.308743 2.714767 2.130288
可使用apply()
方法沿DataFrame
或Panel
的軸應用任意函數,它與描述性統計方法同樣,採用可選的axis
參數。 默認狀況下,操做按列執行,將每列列爲數組。app
示例-1dom
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(np.mean) print(df)
輸出結果:函數
col1 col2 col3 0 0.343569 -1.013287 1.131245 1 0.508922 -0.949778 -1.600569 2 -1.182331 -0.420703 -1.725400 3 0.860265 2.069038 -0.537648 4 0.876758 -0.238051 0.473992
經過傳遞axis
參數,能夠在行上執行操做。spa
示例-2code
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(np.mean,axis=1) print(df)
輸出結果:
col1 col2 col3 0 0.543255 -1.613418 -0.500731 1 0.976543 -1.135835 -0.719153 2 0.184282 -0.721153 -2.876206 3 0.447738 0.268062 -1.937888 4 -0.677673 0.177455 1.397360
示例-3對象
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(lambda x: x.max() - x.min()) print(df)
輸出結果:blog
col1 col2 col3 0 -0.585206 -0.104938 1.424115 1 -0.326036 -1.444798 0.196849 2 -2.033478 1.682253 1.223152 3 -0.107015 0.499846 0.084127 4 -1.046964 -1.935617 -0.009919
並非全部的函數均可以向量化(也不是返回另外一個數組的NumPy
數組,也不是任何值),在DataFrame
上的方法applymap()
和相似於在Series上的map()
接受任何Python函數,而且返回單個值。
示例-1
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df['col1'].map(lambda x:x*100) print(df)
輸出結果:
col1 col2 col3 0 0.629348 0.088467 -1.790702 1 -0.592595 0.184113 -1.524998 2 -0.419298 0.262369 -0.178849 3 -1.036930 1.103169 0.941882 4 -0.573333 -0.031056 0.315590
示例-2
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.applymap(lambda x:x*100) print(df)
輸出結果:
output is as follows: col1 col2 col3 0 17.670426 21.969052 -49.064031 1 22.237846 42.216693 195.392124 2 24.109576 -86.457646 69.643171 3 35.576312 -162.332803 -81.743023 4 30.874333 71.476717 13.028751