我是靠谱客的博主 粗犷水蜜桃,这篇文章主要介绍pandas 数据转换函数map、apply、applymap,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
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的每个元素
“”"

复制代码
1
2
df["公司"].unique()
复制代码
1
2
array(['BABA', 'JD', 'JSR', 'HR'], dtype=object)
复制代码
1
2
3
4
5
6
#(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阿里巴巴
复制代码
1
2
3
4
5
#方法二: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阿里巴巴阿里巴巴
复制代码
1
2
3
4
5
#(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阿里巴巴阿里巴巴阿里巴巴
复制代码
1
2
3
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阿里巴巴阿里巴巴阿里巴巴阿里巴巴
复制代码
1
2
3
4
#(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
复制代码
1
2
3
4
sub_df["交易量"] = sub_df["交易量"].str.replace("M","") sub_df.head() #没有解决怎么将字符串变成数字类型
复制代码
1
2
3
4
5
6
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
复制代码
1
2
3
4
sub_df02 = df[["收盘","开盘","高","低"]] sub_df02.applymap(lambda x: int(x)).head() #将表中的这些数字取整,应用于所有元素,applymap本身就是对多有的DataFrame进行操作
收盘开盘
0201202202196
1201205206201
2199203204198
3212210214209
4216220221210
复制代码
1
2
3
#直接修改原df的几列 df.loc[:,['收盘','开盘','高','低']] = sub_df02.applymap(lambda x: int(x)).head()
复制代码
1
2
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阿里巴巴阿里巴巴阿里巴巴阿里巴巴
复制代码
1
2

最后

以上就是粗犷水蜜桃最近收集整理的关于pandas 数据转换函数map、apply、applymap的全部内容,更多相关pandas内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部