Pandas的数据转换函数map、apply、applymap(十七)

数据转换函数对比:map、apply、applymap:

  • 1、map:只用于Series,实现每个值->值的映射;
  • 2、apply:用于Series实现每个值的处理,用于Dataframe实现某个轴的Series的处理;
  • 3、applymap:只能用于DataFrame,用于处理该DataFrame的每个元素;
1. map用于Series值的转换

实例:将股票代码英文转换成中文名字
Series.map(dict) or Series.map(function)均可

import pandas as pd
stocks = pd.read_excel('./datas/stocks/互联网公司股票.xlsx')
stocks.head()
stocks["公司"].unique()

# 公司股票代码到中文的映射,注意这里是小写
dict_company_names = {
    "bidu": "百度",
    "baba": "阿里巴巴",
    "iq": "爱奇艺", 
    "jd": "京东"
}

方法1:Series.map(dict)

stocks["公司中文1"] = stocks["公司"].str.lower().map(dict_company_names)

方法2:Series.map(function)
function的参数是Series的每个元素的值

stocks["公司中文2"] = stocks["公司"].map(lambda x : dict_company_names[x.lower()])
stocks.head()
2. apply用于Series和DataFrame的转换
  • Series.apply(function), 函数的参数是每个值
  • DataFrame.apply(function), 函数的参数是Series
  • (1)Series.apply(function)
    function的参数是Series的每个值
stocks["公司中文3"] = stocks["公司"].apply(
    lambda x : dict_company_names[x.lower()])
  • (2)DataFrame.apply(function)
    function的参数是对应轴的Series
stocks["公司中文4"] = stocks.apply(
    lambda x : dict_company_names[x["公司"].lower()], 
    axis=1)

注意:
(1)apply是在stocks这个DataFrame上调用;
(2)lambda x的x是一个Series,因为指定了axis=1所以Seires的key是列名,可以用x[‘公司’]获取

3. applymap用于DataFrame所有值的转换
sub_df = stocks[['收盘', '开盘', '高', '低', '交易量']]#获取这些列的数据
# 将这些数字取整数,应用于所有元素,使其每个系列的值都为整数
sub_df.applymap(lambda x : int(x))
# 直接修改原df的这几列
stocks.loc[:, ['收盘', '开盘', '高', '低', '交易量']] = sub_df.applymap(lambda x : int(x))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值