如何將函式應用到 Pandas Dataframe 中的某一列中去
Sathiya Sarathi
2024年2月15日
-
Pandas
apply()
和transform()
方法 -
使用
apply()
將函式應用於 Pandas DataFrame 列 -
使用
transform()
將一個函式應用到 Pandas DataFrame 列
在 Pandas 中,可以使用 apply()
和 transform()
等方法對列和 DataFrame 進行轉換和操作。所需的轉換作為引數以函式的形式傳遞給這些方法。每種方法都有其細微的區別和作用。本文將介紹如何將一個函式應用於一列或整個 DataFrame。
Pandas apply()
和 transform()
方法
apply()
和 transform()
方法都是對單個列和整個 DataFrame 進行操作。apply()
方法沿著指定的軸應用函式。它將列作為 DataFrame 傳遞給自定義函式,而 transform()
方法將單個列作為 Pandas Series
傳遞給自定義函式。
apply()
方法的輸出根據輸入以 DataFrame
或 Series
的形式接收,而 transform()
方法則以 Series
的形式接收。apply()
和 transform()
方法的語法都類似於:
Dataframe.apply(customFunction, axis=0)
Dataframe.transform(customFunction, axis=0)
引數對應於
customFunction
:要應用於 DataFrame 或Series
的函式。axis
:0 指的是行,1 指的是列,函式需要應用在行或列上。
使用 apply()
將函式應用於 Pandas DataFrame 列
現在我們已經掌握了基礎知識,讓我們動手編寫程式碼,瞭解如何使用 apply()
方法將一個函式應用到 DataFrame 列。
我們將使用下面的 DataFrame 示例。
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
將函式應用到整個 DataFrame 的示例程式碼如下所示。
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df = df.apply(add_2)
print(df)
輸出:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 4 5
1 6 7 8
2 9 10 11
如上圖所示,函式可以應用於整個 DataFrame。
將函式應用於單列
讓我們來看看當函式沿單列應用時會發生什麼。
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df["A"] = df["A"].apply(add_2)
print(df)
# or #
df["A"].transform(add_2)
print(df)
輸出:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 2 3
1 6 5 6
2 9 8 9
使用 transform()
將一個函式應用到 Pandas DataFrame 列
讓我們看看如何使用 transform()
方法將一個函式應用到一個 DataFrame 列。我們將使用與上面相同的 DataFrame 示例。
應用函式到整個 DataFrame 的示例程式碼如下所示。
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df = df.transform(add_2)
print(df)
輸出:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 4 5
1 6 7 8
2 9 10 11
如上圖所示,函式可以應用到整個 DataFrame。
將函式應用於單列
讓我們來看看當函式沿單列應用時會發生什麼。
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)
def add_2(x):
return x + 2
df["A"] = df["A"].transform(add_2)
print(df)
輸出:
A B C
0 1 2 3
1 4 5 6
2 7 8 9
A B C
0 3 2 3
1 6 5 6
2 9 8 9