返回

如何逐行修改 Pandas DataFrame 中特定列的值?

python

如何使用 apply() 函数更改单列值?

简介

在数据分析中,我们经常需要对特定列进行操作。Pandas 提供了 apply() 函数,它允许我们逐行对列中的值执行自定义函数。本文将指导你如何使用 apply() 函数仅更改单列的值。

步骤

1. 导入 Pandas 库

import pandas as pd

2. 创建 DataFrame

创建一个 DataFrame,其中包含需要更改的列。

3. 定义自定义函数

定义一个自定义函数来操作列中的值。该函数应该接受一个参数(列值)并返回一个操作后的值。

4. 使用 apply() 函数

使用 apply() 函数将自定义函数应用于 DataFrame 的指定列。该函数将逐行执行自定义函数并返回一个包含操作后值的新列。

示例

以下示例演示如何使用 apply() 函数将 "列 1" 值乘以 2:

# 创建 DataFrame
df = pd.DataFrame({
    "列 1": [1, 2, 3, 4, 5],
    "列 2": ['a', 'b', 'c', 'd', 'e']
})

# 定义自定义函数
def my_function(value):
    return value * 2

# 使用 apply() 函数
df["列 1"] = df["列 1"].apply(my_function)

# 打印结果
print(df)

输出:

 1 列 2
0    2   a
1    4   b
2    6   c
3    8   d
4   10   e

注意事项

  • apply() 函数可以接受一个函数或 lambda 表达式作为参数。
  • 确保自定义函数与列中值的类型兼容。
  • apply() 函数返回一个新的 Series,其中包含了操作后的值。

常见问题解答

  1. 我可以使用 apply() 函数更改多个列吗?
    答:是的,你可以通过将一个包含多个自定义函数的列表传递给 apply() 函数来更改多个列。

  2. 如何使用 lambda 表达式来定义自定义函数?
    答:你可以使用 lambda 表达式来创建一次性函数,就像这样:

    df["列 1"] = df["列 1"].apply(lambda x: x * 2)
    
  3. 我可以使用 apply() 函数删除列吗?
    答:不能,apply() 函数用于修改列中的值,但不能删除列。

  4. 如何防止 apply() 函数修改原始 DataFrame?
    答:在调用 apply() 函数时,使用 inplace=False 参数。

  5. 如何将 apply() 函数的结果保存到一个新列中?
    答:使用 result_type="expand" 参数将 apply() 函数的结果保存到一个新列中。

结论

使用 apply() 函数可以轻松地逐行修改 DataFrame 中特定列的值。通过自定义函数,你可以执行各种操作,从简单的算术运算到更复杂的字符串操作。