如何使用 Pandas apply() 的 inplace 引數?


Pandas 中的 apply() 函式用於將自定義函式應用於資料框或序列。apply() 函式可用於對資料執行轉換、計算和其他操作。預設情況下,apply() 函式返回一個新的資料框或序列。我們也可以使用 apply() 函式的 inplace 引數來修改資料框或序列。在本文中,我們將透過示例瞭解如何使用 inplace 引數。

apply() 函式的語法

df.apply(func, axis=0)

這裡,df 是我們需要在其上應用函式 func 的資料框。axis 引數用於將應用的函式設定為行 (axis=0) 或列 (axis=1)。func 可以是內建函式或自定義函式。

不使用 inplace 引數的 apply() 方法

當我們不使用 apply() 函式的 **inplace** 引數時,它會返回一個新的資料框或序列,而原始資料框保持不變。

示例

在下面的示例中,我們有一個包含“姓名”列的資料框。我們定義了一個自定義函式 add_prefix(),它會在每個姓名前新增字首“Mr.”。透過在“姓名”列上使用 **apply()**,我們得到一個新的序列 **new_df**,其中包含修改後的姓名。

import pandas as pd

# Create a DataFrame
data = {'Name': ['John', 'Emily', 'James', 'Emma'],
        'Age': [28, 32, 25, 29]}
df = pd.DataFrame(data)

# Function to add a prefix to names
def add_prefix(name):
    return 'Mr. ' + name

# Apply the function to the 'Name' column
new_df = df['Name'].apply(add_prefix)

# Output the new DataFrame
print(new_df)

輸出

0     Mr. John
1    Mr. Emily
2    Mr. James
3     Mr. Emma
Name: Name, dtype: object

使用 inplace 引數的 apply() 方法

透過將 inplace 引數傳遞給 **apply()** 方法,我們可以直接修改原始資料框或序列。我們需要將 inplace 引數指定為 **True**。

示例

在下面的示例中,我們首先建立一個包含“姓名”和“年齡”列的資料框。然後,定義一個自定義函式 **add_prefix()**,用於在每個姓名前新增字首“Mr.”。將 **apply()** 函式與 **add_prefix()** 函式一起應用於“姓名”列,並將 inplace=True 引數設定為直接修改原始資料框。最後,列印修改後的資料框,顯示“姓名”列中添加了字首的姓名。

import pandas as pd

# Create a DataFrame
data = {'Name': ['John', 'Emily', 'James', 'Emma'],
        'Age': [28, 32, 25, 29]}
df = pd.DataFrame(data)

# Function to add a prefix to names
def add_prefix(name):
    return 'Mr. ' + name

# Apply the function to the 'Name' column in-place
df['Name'].apply(add_prefix, inplace=True)

# Output the modified DataFrame
print(df)

輸出

       Name  Age
0   Mr. John   28
1  Mr. Emily   32
2  Mr. James   25
3   Mr. Emma   29

使用 apply 函式處理多個列

我們可以使用 axis 引數將 **apply()** 函式應用於多個列。如果我們傳遞 axis=1,則 apply 方法按列應用;如果 axis 引數傳遞為 axis=0,則 apply() 方法按行應用。

示例

在下面的示例中,我們有一個包含三列的資料框:“姓名”、“年齡”和“薪水”。process_data() 函式用於在“姓名”列新增字首“Mr.”,並將“薪水”列的值加倍。透過使用帶 axis=1 的 apply() 應用此函式到指定的列,我們可以直接修改原始資料框 df。

import pandas as pd

# Create a DataFrame
data = {'Name': ['John', 'Emily', 'James', 'Emma'],
        'Age': [28, 32, 25, 29],
        'Salary': [50000, 60000, 45000, 55000]}
df = pd.DataFrame(data)

# Function to add a prefix to names and double the salary
def process_data(row):
    row['Name'] = 'Mr. ' + row['Name']
    row['Salary'] *= 2
    return row

# Apply the function to multiple columns
df[['Name', 'Salary']] = df[['Name', 'Salary']].apply(process_data, axis=1)

# Output the modified DataFrame
print(df)

輸出

        Name  Age  Salary
0   Mr. John   28  100000
1  Mr. Emily   32  120000
2  Mr. James   25   90000
3   Mr. Emma   29  110000

何時使用 inplace 引數的 apply() 方法

將 inplace 引數設定為 **`True`** 的 **apply()** 方法主要用於在不建立新物件的情況下修改原始資料框或序列。這將有助於節省記憶體並提高效能,尤其是在處理大型資料集時。

有時,使用將 inplace 引數設定為 True 的 apply() 方法來修改原始資料可能會很危險,因為它可能會導致意外結果或資料丟失,如果處理不當。通常建議在使用 apply() 方法修改資料之前備份原始資料。

結論

在本文中,我們討論瞭如何使用 Pandas 的 apply() 方法的 inplace 引數,以及如何使用它將自定義函式應用於資料框的列或序列。預設情況下,apply() 方法會返回一個應用了函式的新資料框或序列。如果我們想修改原始資料框,我們需要將 inplace 引數指定為 true。

更新於:2023年10月13日

676 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告