我是靠谱客的博主 粗犷水蜜桃,最近开发中收集的这篇文章主要介绍pandas 数据转换函数map、apply、applymap,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import pandas as pd
import os
os.chdir(r'C:UsersHansDesktopdata_analysis')
df = pd.read_excel('pandas_multiindex.xls')
df.head()
日期收盘开盘交易量涨跌幅公司
02020年5月27日201.18202.64202.64196.7723.61M-0.0027BABA
12020年5月26日201.72205.96206.69201.1628.68M0.0101BABA
22020年5月22日199.70203.23204.88198.9951.98M-0.0587BABA
32020年5月21日212.16210.91214.51209.5429.85M-0.0214BABA
42020年5月20日216.79220.12221.10210.7838.32M-0.0019BABA

“”"
(1)map 只用于Series,实现每个值–>值的映射
(2)apply 用于Series实现每个值的处理,用于DataFrame实现某个轴的Series的处理
(3)applymap 只能用于DataFrame,用于处理DataFrame的每个元素
“”"

df["公司"].unique()
array(['BABA', 'JD', 'JSR', 'HR'], dtype=object)
#(1)map用于Series值的转换。实例:将股票代码英文转换成中文名字
dict_names = {"BABA":"阿里巴巴","JD":"京东","JSR":"金斯瑞","HR":"恒瑞"}
#方法一:Series.map(dict)
df["公司中文名称1"] = df["公司"].map(dict_names)
df.head()
日期收盘开盘交易量涨跌幅公司公司中文名称1
02020年5月27日201.18202.64202.64196.7723.61M-0.0027BABA阿里巴巴
12020年5月26日201.72205.96206.69201.1628.68M0.0101BABA阿里巴巴
22020年5月22日199.70203.23204.88198.9951.98M-0.0587BABA阿里巴巴
32020年5月21日212.16210.91214.51209.5429.85M-0.0214BABA阿里巴巴
42020年5月20日216.79220.12221.10210.7838.32M-0.0019BABA阿里巴巴
#方法二:Series.map(function)
df["公司中文2"]=df["公司"].map(lambda x:dict_names[x])
df.head()
#lambda函数不会!!
日期收盘开盘交易量涨跌幅公司公司中文名称1公司中文2
02020年5月27日201.18202.64202.64196.7723.61M-0.0027BABA阿里巴巴阿里巴巴
12020年5月26日201.72205.96206.69201.1628.68M0.0101BABA阿里巴巴阿里巴巴
22020年5月22日199.70203.23204.88198.9951.98M-0.0587BABA阿里巴巴阿里巴巴
32020年5月21日212.16210.91214.51209.5429.85M-0.0214BABA阿里巴巴阿里巴巴
42020年5月20日216.79220.12221.10210.7838.32M-0.0019BABA阿里巴巴阿里巴巴
#(2)apply 用于Series和DataFrame的转换,Series.apply(function),函数的参数是每个值。
#DataFrame.apply(function),函数的参数是Series
df["公司中文3"]=df["公司"].apply(lambda x:dict_names[x])
df.head()
日期收盘开盘交易量涨跌幅公司公司中文名称1公司中文2公司中文3
02020年5月27日201.18202.64202.64196.7723.61M-0.0027BABA阿里巴巴阿里巴巴阿里巴巴
12020年5月26日201.72205.96206.69201.1628.68M0.0101BABA阿里巴巴阿里巴巴阿里巴巴
22020年5月22日199.70203.23204.88198.9951.98M-0.0587BABA阿里巴巴阿里巴巴阿里巴巴
32020年5月21日212.16210.91214.51209.5429.85M-0.0214BABA阿里巴巴阿里巴巴阿里巴巴
42020年5月20日216.79220.12221.10210.7838.32M-0.0019BABA阿里巴巴阿里巴巴阿里巴巴
df["公司中文4"]=df.apply(lambda x:dict_names[x["公司"]],axis = 1)#注意等式右侧是df.apply,需要指定axis
df.head()
日期收盘开盘交易量涨跌幅公司公司中文名称1公司中文2公司中文3公司中文4
02020年5月27日201.18202.64202.64196.7723.61M-0.0027BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
12020年5月26日201.72205.96206.69201.1628.68M0.0101BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
22020年5月22日199.70203.23204.88198.9951.98M-0.0587BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
32020年5月21日212.16210.91214.51209.5429.85M-0.0214BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
42020年5月20日216.79220.12221.10210.7838.32M-0.0019BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
#(3)applymap 用于DataFrame的数据转换
sub_df = df[["收盘","开盘","高","低","交易量"]]
sub_df.head()
收盘开盘交易量
0201.18202.64202.64196.7723.61M
1201.72205.96206.69201.1628.68M
2199.70203.23204.88198.9951.98M
3212.16210.91214.51209.5429.85M
4216.79220.12221.10210.7838.32M
sub_df["交易量"] = sub_df["交易量"].str.replace("M","")
sub_df.head()
#没有解决怎么将字符串变成数字类型
C:ProgramDataAnaconda3libsite-packagesipykernel_launcher.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
"""Entry point for launching an IPython kernel.
收盘开盘交易量
0201.18202.64202.64196.7723.61
1201.72205.96206.69201.1628.68
2199.70203.23204.88198.9951.98
3212.16210.91214.51209.5429.85
4216.79220.12221.10210.7838.32
sub_df02 = df[["收盘","开盘","高","低"]]
sub_df02.applymap(lambda x: int(x)).head()
#将表中的这些数字取整,应用于所有元素,applymap本身就是对多有的DataFrame进行操作
收盘开盘
0201202202196
1201205206201
2199203204198
3212210214209
4216220221210
#直接修改原df的几列
df.loc[:,['收盘','开盘','高','低']] = sub_df02.applymap(lambda x: int(x)).head()
df.head()
日期收盘开盘交易量涨跌幅公司公司中文名称1公司中文2公司中文3公司中文4
02020年5月27日201.0202.0202.0196.023.61M-0.0027BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
12020年5月26日201.0205.0206.0201.028.68M0.0101BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
22020年5月22日199.0203.0204.0198.051.98M-0.0587BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
32020年5月21日212.0210.0214.0209.029.85M-0.0214BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴
42020年5月20日216.0220.0221.0210.038.32M-0.0019BABA阿里巴巴阿里巴巴阿里巴巴阿里巴巴

最后

以上就是粗犷水蜜桃为你收集整理的pandas 数据转换函数map、apply、applymap的全部内容,希望文章能够帮你解决pandas 数据转换函数map、apply、applymap所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部