几个数据转换函数的对比

  • map:Pandas 2.1.0 之前:map 只能用于 Series,用于实现 每个值 -> 值 的映射。Pandas 2.1.0 及以后:map 也可以用于 DataFrame,用于对 DataFrame 的 每个元素 进行操作,这取代了之前 applymap 的功能。
  • apply:用于Series实现每个值的处理,用于DataFrame实现某个轴的Series的处理(默认按列处理)。
  • applymap:只能用于DataFrame,用于处理该DataFrame的每个元素。从 Pandas 2.1.0 开始被废弃。官方建议使用 DataFrame.map 替代 applymap

map用于Series值的转换

语法说明

Series.map(arg, na_action=None)
  • 将 Series 中的值根据输入的映射或函数进行转换。
  • 用于将 Series 中的每个值替换为另一个值,这些值可以来自函数、字典或另一个 Series。

输入参数

  • arg:可以是函数、字典、或者 另外一个Series。

返回值:返回值是一个 Series 对象,其索引与调用该方法的原始 Series 相同。

示例

引入数据:

import pandas as pd
stock_df = pd.read_excel('./data/几家公司几天的股票.xlsx')

查看数据:
在这里插入图片描述

看看有哪些公司:
在这里插入图片描述

公司股票代码到公司名称的映射:

# 公司股票代码到公司名称的映射,注意,用的是小写
company_names_dict = {
    'jd': '京东',
    'bidu': '百度',
    'baba': '阿里巴巴',
    'tcehy': '腾讯'
}

Series.map(传入字典)

stock_df['公司中文名称1'] = stock_df['公司'].str.lower().map(company_names_dict)

查看结果:
在这里插入图片描述

Series.map(传入函数)

stock_df['公司中文名称2'] = stock_df['公司'].map(lambda x : company_names_dict[x.lower()])

查看结果:
在这里插入图片描述

apply函数用于Series和DataFrame的转换

Series.apply

Series.apply(func, convert_dtype=<no_default>, args=(), *, by_row='compat', **kwargs)

当在Series上调用apply时,传入func的参数是每个值。

当前的DataFrame:
在这里插入图片描述

stock_df['公司中文名称3'] = stock_df['公司'].apply(lambda x : company_names_dict[x.lower()])

查看此时的DataFrame:
在这里插入图片描述

DataFrame.apply

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), by_row='compat', engine='python', engine_kwargs=None, **kwargs)

当在DataFrame上调用apply时,传入func的参数是对应轴的Series。

下面在DataFrame上执行apply操作:

stock_df['公司中文名称4'] = stock_df.apply(lambda x : company_names_dict[x['公司'].lower()], axis=1)

注意
上面的代码,lambda x 的 x是一个Series,因为指定了axis=1,所以Series是跨列的(跨列的意思是传入了一行数据),key是列名,可以用x[‘公司’]获取。

查看执行后的结果:
在这里插入图片描述

map用于DataFrame所有值的转换

语法

DataFrame.map(func, na_action=None, **kwargs)

map方法将一个接受并返回标量的函数应用于 DataFrame 的每一个元素。

示例

先获取一个新的DataFrame:

sub_df = stock_df[['收盘', '开盘', '高', '低', '交易量']]

查看新的DataFrame:
在这里插入图片描述

将DataFrame中的每个数值都转换为整数:

sub_df.map(lambda x : int(x))

查看结果:
在这里插入图片描述

更多推荐