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

'''
数据转换函敌对比: map、apply.applymap:
1. map:只用于Series,实现每个值->值的映时;
2.apply: 用于Spries实现每个值的处理,用于Dataframe实现某个油的Series的处理;
3.applymap:只能用于DataFrame,用于处理该DataFrame的每个元素;'''
##1.map用于Series值的转换
import pandas as pd

fn ="D:\\python39\\pandas\\antlearnpandasmaster\\datas\\stocks\\互联网公司股票.xlsx"
stocks=pd.read_excel(fn)
st= stocks['公司'].unique()
print(st)
#公司股票代码到中文的映射,注意这里是小写
dict_company_names = {
    'bidu':'百度',
    'baba':'阿里巴巴',
    'iq':'爱奇艺',
    'jd':"京东"
}
#方法1:Series.map(dict)
stocks['公司中文1'] = stocks['公司'].str.lower().map(dict_company_names)#将公司名由大写改为小写,再由map()将英文映射转为中文
#方法2:Series.map(function)
#function的参数是Series的每个元素的值
stocks['公司中文2'] = stocks['公司'].map(lambda x:dict_company_names[x.lower()])
##2. apply用于Series和DataFrame的转换
# - Series.apply(function),函数的参数是每个值
stocks['公司中文3']= stocks['公司'].apply(lambda x:dict_company_names[x.lower()])
# - DataFrame.apply(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_df1=sub_df.applymap(lambda x:int(x))#lambda x中的x是所有sub_df中的元素,不是某一列,也不是某一行
stocks.loc[:,['收盘','开盘','高','低','交易量']]=sub_df.applymap(lambda x:int(x))
print(stocks.head())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值