如何將函式應用到 Pandas Dataframe 中的某一列中去

Sathiya Sarathi 2023年1月30日 2020年11月24日
  1. Pandas apply()transform() 方法
  2. 使用 apply() 將函式應用於 Pandas DataFrame 列
  3. 使用 transform() 將一個函式應用到 Pandas DataFrame 列
如何將函式應用到 Pandas Dataframe 中的某一列中去

在 Pandas 中,可以使用 apply()transform() 等方法對列和 DataFrame 進行轉換和操作。所需的轉換作為引數以函式的形式傳遞給這些方法。每種方法都有其細微的區別和作用。本文將介紹如何將一個函式應用於一列或整個 DataFrame。

Pandas apply()transform() 方法

apply()transform() 方法都是對單個列和整個 DataFrame 進行操作。apply() 方法沿著指定的軸應用函式。它將列作為 DataFrame 傳遞給自定義函式,而 transform() 方法將單個列作為 Pandas Series 傳遞給自定義函式。

apply() 方法的輸出根據輸入以 DataFrameSeries 的形式接收,而 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 列 - example.png

將函式應用到整個 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

相關文章 - Pandas DataFrame