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)