如何使用 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。