Part17:Pandas的数据转换函数--map、apply、applymap

Pandas的数据转换函数map.apply、applymap

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

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) ----在map函数中传进去一个字典只用于Series 

#  stocks['公司'].str.lower()---将公司中的所有字母转换为小写字母
#  .map(dict_company_names)--把公司中所有对应的列转换为其对应的中文字母
stocks['公司中文1']=stocks['公司'].str.lower().map(dict_company_names)
stocks.head()

方法2:Series.map(function) ----在map函数中传进去一个自定义函数只用于Series

function的参数是Series的每个元素的值

stocks['公司中文2']=stocks['公司'].map(lambda x:dict_company_names[x.lower()])
stocks.head()

2.apply用于Series和DataFrame的转换---既可以用于Series也可以用于DataFrame

Series.apply(function),函数的参数是每个值.

DataFrame.apply(function),函数的参数是Series

Series.apply(function)

function的参数是Series的每个值

stocks['公司中文3']=stocks['公司'].apply(
    lambda x:dict_company_names[x.lower()]
)
stocks.head()

DataFrame.apply(function)

function的参数是对应轴的Series

stocks['公司中文4']=stocks.apply(
    lambda x:dict_company_names[x['公司'].lower()],
    axis=1
)
stocks.head()

 

 

注意这个代码:

1、apply是在stocks这个DataFrame上调用;

2、lambda x的x是一个Series,因为指定了axis=1所以Seires的key是列名,可以用x[公司"]获取

3.applymap用于DataFrame所有值的转换

sub_df=stocks[['收盘','开盘','高','低','交易量']]
sub_df.head()

#将这些数字取整数,应用于所有元素
sub_df.applymap(lambda x:int(x))

 

#直接修改原df的这几列
stocks.loc[:,['收盘','开盘','高','低','交易量']]=sub_df.applymap(lambda x:int(x))
stocks.head()

 

你可能感兴趣的:(Pandas,pandas,python,数据分析)