如何使用 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
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
使用 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。