一、df.apply函數簡介
df.apply函數是Pandas中一個非常強大的函數,它允許我們對DataFrame的每一行或者每一列分別應用一個自定義的函數,然后將結果合并成一個新的DataFrame對象。
df.apply函數具體的語法如下:
df.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), \*\*kwds)
其中各參數的含義如下:
func:要應用的函數,可以是Python內置函數、Lambda表達式或自定義函數。 axis:表示DataFrame沿著行還是列的方向應用函數,0表示列,1表示行,缺省值為0。 broadcast:是否將函數應用到整個DataFrame,默認為None。 raw:是否直接傳遞原始的NumPy數據,默認為False。 reduce:是否啟用縮減機制,默認為None。 result_type:返回值的類型,默認為None。 args:額外的參數傳遞給函數。 kwds:關鍵字參數傳遞給函數。二、按行或按列應用函數
根據axis參數的不同,df.apply函數可以實現按行或按列應用函數,下面分別進行闡述。
三、應用自定義函數
除了Python內置函數和Lambda表達式,還可以應用自定義函數來進行計算,下面是一個簡單的例子:
# 導入必要的庫
import pandas as pd
# 定義一個DataFrame對象
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
# 定義一個自定義函數,將每一列的最大值與最小值相加
def my_func(x):
return x.max() + x.min()
# 對DataFrame對象進行函數應用
df.apply(my_func)
以上代碼的輸出結果如下:
A 4
B 9
C 16
dtype: int64
從輸出結果可以看到,將每一列的最大值與最小值相加得到了一個新的Series對象。
四、應用帶參數的函數
在使用df.apply函數的時候,還可以傳遞額外的參數給被應用的函數,下面是一個簡單的例子:
# 導入必要的庫
import pandas as pd
# 定義一個DataFrame對象
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
# 定義一個帶參數的函數,將每一列的數據乘以特定的因子
def my_func(x, factor):
return x * factor
# 對DataFrame對象進行函數應用
df.apply(my_func, args=(2,))
以上代碼的輸出結果如下:
A B C
0 2 8 14
1 4 10 16
2 6 12 18
從輸出結果可以看到,將每一列的數據乘以2得到了一個新的DataFrame對象。
五、應用多個函數
df.apply函數還支持同時應用多個函數來進行計算,下面是一個簡單的例子:
# 導入必要的庫
import pandas as pd
# 定義一個DataFrame對象
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
# 定義兩個函數,將每一列的數據分別乘以2和減去平均值
def func1(x):
return x * 2
def func2(x):
return x - x.mean()
# 對DataFrame對象進行函數應用
df.apply([func1, func2])
以上代碼的輸出結果如下:
A B C
func1 func2 func1 func2 func1 func2
0 2 -1.0 8 -1.0 14 -1.0
1 4 0.0 10 0.0 16 0.0
2 6 1.0 12 1.0 18 1.0
從輸出結果可以看到,將每一列的數據分別乘以2和減去平均值得到了一個新的DataFrame對象。
六、總結
df.apply函數是Pandas中一個非常實用的函數,可以幫助我們快速進行數據處理和轉換。它提供了非常豐富的參數和選項,方便我們進行靈活的操作。在實際的數據分析和處理過程中,df.apply函數是經常使用的一個函數,掌握它的使用方法對于提高數據分析和處理的效率是非常有幫助的。