DataFrame.applymap(func) [source]
将函数应用于Dataframe元素。
此方法应用一个函数,该函数接受并向DataFrame的每个元素返回一个标量。
参数: | func : 可调用的 函数,从一个值返回一个值。 |
返回: | DataFrame 改变的DataFrame. |
Notes:
在当前的实现中,applymap在第一列/行上两次调用func,以决定它的代码路径是快还是慢。如果func有副作用,这可能会导致意想不到的行为,因为它们将对第一列/行起两次作用。
例子,
1)简单的函数应用
将每个元素加 1:
import pandas as pd # 创建一个示例 DataFrame df = pd.DataFrame([[1, 2.5], [3.1, 4.7]]) # 定义一个简单的函数 def add_one(x): return x + 1 # 使用 applymap 将函数应用到每个元素上 result = df.applymap(add_one) print(result)
2)处理字符串
将每个元素转换为字符串并添加后缀:
import pandas as pd # 创建一个示例 DataFrame df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) # 定义一个函数,将元素转换为字符串并添加后缀 def add_suffix(x): return str(x) + '_suffix' # 使用 applymap 将函数应用到每个元素上 result = df.applymap(add_suffix) print(result)
3)跳过 NaN 值
将每个元素平方,并跳过 NaN 值:
import numpy as np # 创建一个包含 NaN 的示例 DataFrame df = pd.DataFrame([[1, 2], [np.nan, 4]], columns=['A', 'B']) # 定义一个函数,将元素平方 def square(x): return x ** 2 # 使用 applymap 将函数应用到每个元素上,跳过 NaN 值 result = df.applymap(square, na_action='ignore') print(result)
4)使用示例
import pandas as pd # 创建示例 DataFrame df = pd.DataFrame([[1, 2.12], [3.356, 4.567]]) print("原始 DataFrame:") print(df) # 使用 applymap 计算每个元素的字符串长度 lengths = df.applymap(lambda x: len(str(x))) print("\n每个元素的字符串长度:") print(lengths) # 使用 applymap 计算每个元素的平方 squared_applymap = df.applymap(lambda x: x**2) print("\n每个元素的平方 (使用 applymap):") print(squared_applymap) # 使用向量化操作计算每个元素的平方 squared_vectorized = df ** 2 print("\n每个元素的平方 (使用向量化操作):") print(squared_vectorized)