map方法会将函数或字典应用于Series中的每个元素,对每个元素执行相同的操作。
若元素是数值:
(1)对每个元素执行相同的计算:
import pandas as pd
# 定义Series
s = pd.Series([1, 2, 3])
# 对每个元素进行平方:
s = s.map(lambda x: x**2)
print(s)
# 输出:
# 0 1
# 1 4
# 2 9
# dtype: int64
(2)将float类型转为百分数:
# 定义df
df = pd.DataFrame({'id': [1, 2, 3],
'达标率': [0.0322, 0.1051, 0.0211]})
df
# 输出:
# id 达标率
# 0 1 0.0322
# 1 2 0.1051
# 2 3 0.0211
# 将'达标率'列转为百分数
df['达标率'] = (df['达标率'] * 100).map('{:,.2f}%'.format)
df
# 输出:
# id 达标率
# 0 1 3.22%
# 1 2 10.51%
# 2 3 2.11%
(3)将int类型转为str类型:
# 定义df
df = pd.DataFrame(data = {'id': [1, 2, 3],
'age': [25, 30, 35],
'sex': [0, 1, 0]})
df
# 输出:
# id age sex
# 0 1 25 0
# 1 2 30 1
# 2 3 35 0
# 将sex列的每个int元素的变为str元素
df['sex'] = df['sex'].map({0: '女',
1: '男'})
df
# 输出:
# id age sex
# 0 1 25 女
# 1 2 30 男
# 2 3 35 女
若元素是str:
(1)修改元素:
# 定义Series
disease = pd.Series(['hBP', 't2DM'])
# 将每个元素的首字母大写,其他字母小写:
disease = disease.map(lambda x: x.capitalize())
print(disease)
# 输出:
# 0 Hbp
# 1 T2dm
# dtype: object