1. DataFrame 的 apply()
用法
apply()
函数可以将一个函数应用于 DataFrame 的每一行或每一列,并返回一个新的 DataFrame 或 Series。
语法:
df.apply(func, axis=0, result_type=None, args=(), **kwargs)
参数:
func
: 要应用的函数。该函数可以接受一个 Series 作为参数,并返回一个值。axis
: 指定要应用函数的方向。0 表示按行应用,1 表示按列应用。默认值为 0
。result_type
: 指定结果的类型。可以是'expand'
,'reduce'
,'broadcast'
或None
。默认值为None
。args
: 传递给函数的额外参数。kwargs
: 传递给函数的额外关键字参数。
示例:
import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': [4, 5, 6]})
# 将每个元素加 1
def add_one(x):
return x + 1
df_new = df.apply(add_one)
print(df_new)
输出:
column1 column2
0 2 5
1 3 6
2 4 7
注意:
apply()
函数可以应用于任何类型的函数,包括 lambda 函数。result_type
参数用于控制结果的形状。args
和kwargs
参数可以传递给函数额外的参数。
2. pandas 的 apply 用法举例
以下是一些使用 pandas.Series.apply
和 pandas.DataFrame.apply
的示例:
1. 对 Series 应用函数
import pandas as pd
# 创建一个 Series
series = pd.Series([1, 2, 3, 4, 5])
# 定义一个函数
def square(x):
return x * x
# 使用 apply 应用函数
squared_series = series.apply(square)
# 打印结果
print(squared_series)
输出:
0 1
1 4
2 9
3 16
4 25
dtype: int64
2. 对 DataFrame 应用函数
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 定义一个函数
def multiply_columns(row):
return row['A'] * row['B']
# 使用 apply 应用函数
result = df.apply(multiply_columns, axis=1)
# 打印结果
print(result)
输出:
0 4
1 10
2 18
dtype: int64
3. 使用 lambda 表达式
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 使用 lambda 表达式应用函数
result = df.apply(lambda row: row['A'] + row['B'], axis=1)
# 打印结果
print(result)
注意:一般来说lambda row里的row应该是一行数据(if axis=1);一列数据(if axis=0)
输出:
0 5
1 7
2 9
dtype: int64
4. 对不同列应用不同函数
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 定义两个函数
def square_column_a(row):
return row['A'] * row['A']
def multiply_columns_b_and_c(row):
return row['B'] * row['C']
# 使用 apply 应用函数
result = df.apply(lambda row: square_column_a(row) if row['A'] > 2 else multiply_columns_b_and_c(row), axis=1)
# 打印结果
print(result)
输出:
0 16
1 25
2 42
dtype: int64