pandas.map()
是Pandas中的一个函数,其作用是根据一个Python字典或一个自定义函数来对Pandas对象的列进行映射操作。其适用于对一列数据进行转换的场景,比如将某一列的性别字符串变成1和0两种表示方式。
pandas.map()
的使用方法
pandas.map()
可以对 Series 、DataFrame 中的某列数据进行映射操作。
下面是 pandas.map()
的常用参数:
arg
:字典、序列或函数,用于映射。字典和序列用于将值转换为其它值;函数用于自定义转换逻辑。na_action
:{None, ‘ignore’},可选。在映射中缺失的值如何处理, 默认为 None,表示保留缺失值;na_action
:’ignore’, 表示忽略缺失值;
下面依次为您演示两个 pandas.map()
的实例:
实例1:将一列数据映射为新的值
首先,我们构造一个示例数据集:
import pandas as pd
import numpy as np
df = pd.DataFrame({'pet': ['cat', 'dog', 'dog', 'fish', 'cat', 'dog'],
'age': [3, 7, 2, np.nan, 9, 2]})
现在我们想要将 pet
列的字符值转换为整数,具体来说,猫(cat)对应 0,狗(dog)对应 1,鱼(fish)对应 2。因此,我们需要创建一个如下的字典进行映射:
pet_map = {'cat': 0, 'dog': 1, 'fish': 2}
然后,我们可以通过下面的代码使用 pandas.map()
将列 pet
映射成新的值:
df['pet_id'] = df['pet'].map(pet_map)
print(df)
输出结果如下:
pet age pet_id
0 cat 3.0 0
1 dog 7.0 1
2 dog 2.0 1
3 fish NaN 2
4 cat 9.0 0
5 dog 2.0 1
实例2:使用自定义函数映射一列数据
在这个例子中,我们希望根据 age
列中的数值来映射一个新的列 age_group
,将 age
列分为儿童(child)、青年(youth)、中年(middle-aged)和老年(elderly)四种年龄段。我们需要先自定义一个函数来处理这个任务:
def map_age(age):
if age < 18:
return 'child'
elif age < 35:
return 'youth'
elif age < 65:
return 'middle-aged'
else:
return 'elderly'
随后我们使用 apply
方法调用以上函数,并将其结果附加在 df
DataFrame 上:
df['age_group'] = df['age'].apply(map_age)
print(df)
输出结果如下:
pet age age_group
0 cat 3.0 child
1 dog 7.0 child
2 dog 2.0 child
3 fish NaN None
4 cat 9.0 child
5 dog 2.0 child
至此,您已经学习了 pandas.map()
的作用与使用方法!