地图(),适用于(),applymap()三者在熊猫中有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
将通过实例来演示三者的区别
toward_dict =,{1:, & # 39;东& # 39;,,2:,& # 39;南& # 39;,,3:,& # 39;西& # 39;,,4:,& # 39;北& # 39;} 时间=df pd.DataFrame({& # 39;房子# 39;,:,列表(& # 39;AABCEFG& # 39;), ,,,,,,,,,& # 39;价格# 39;,:,(100,,90,,& # 39;& # 39;,,50岁,120年,150年,200年), ,,,,,,,,,& # 39;向# 39;,:,(& # 39;1 & # 39;& # 39;1 & # 39;,& # 39;2 & # 39;,& # 39;3 & # 39;,& # 39;& # 39;,& # 39;3 & # 39;,& # 39;2 & # 39;]}) df
map()方法
通过df。(选项卡)键,发现df的属性列表中有应用()和applymap(),但没有地图()。
map()是python自带的方法,可以对df某列内的元素进行操作,我个人最常用的场景就是有<代码> toward_dict> 代码的映射关系,为df中的<代码>对代码>匹配出结果,
, df(& # 39;朝向& # 39;],=,df.toward.map (toward_dict); df
第一种思路:“toward_dict”的关键转换为str型 toward_dict2 =, dict (str(关键),val), for 关键,,val 拷贝toward_dict.items ())
#,第二种思路,,将df.toward转为int型 时间=df.toward df.toward.map (lambda x:, np.nan if x ==, & # 39; & # 39;, else x) . map (int, na_action=& # 39;忽略# 39;) df(& # 39;朝向2 & # 39;],=,df.toward.map (toward_dict); df
apply()方法
更新时间:2018-08-10
我目前的实际工作中使用<代码> apply() 代码>方法比较少,所以整理的内容比较简陋,后续涉及到数据分析方面可能会应用比较多些。
先将上面的测试中的<代码> 代码>地图替换为<代码> 代码>,看看怎么样?
结果报错了,<代码> ValueError> 代码,还是老老实实写实际操作例子吧?
参考DataFrame。应用官方文档
文档中第一个参数:
func:
引用>
函数适用于每一列或行。意思即是,将传入的<代码> func> 代码应用到每一列或每一行,进行元素级别的运算
第二个参数:轴:{0或“指数# 39;1或“列# 39;},默认0
引用>
轴沿着这功能应用:
0或“指数# 39;:函数应用到每一列。#注意这里的解释
1或“列# 39;:函数应用到每一行。举例:
这个要特别注意的,
没有继续使用地图里的DF,是因为DF。房子是字符串,不能进行<代码> np.sum 代码>运算,会报的错。
<代码> 2018年12月3日代码>新增:
最近在工作中使用到了<代码> pandas.apply() 代码>方法,更新如下:背景介绍:
一个<代码> df> 代码有三个列需要进行计算,<代码> change_type> 代码值为1和0,1为涨价,0为降价,价格<代码> 代码>为现价,<代码> 代码>改变为涨降价的绝对值,现求:涨降价的比例,精确到0位,无小数位,
解决思路:
1。最主要的计算是:涨降价的绝对值/原价
2。最主要的难点是:涨价的原价=现价——绝对值
降价的原价=现价+绝对值
伪代码如下:涨降价比例=圆(变化/(价格加上或减去改变),0)
就是我需求的结果了。解决方案如下:
<代码>以下代码经过赢得10环境python3.6版本测试通过代码>import pandas as pd 时间=df pd.DataFrame ({& # 39; change_type& # 39;,:, (1, - 1, 0, 0, 1, 0], ,,,,,,,,,& # 39;价格# 39;,:,(100,,90,,,,,120,150,200]。 ,,,,,,,,,& # 39;改变# 39;,:,(10 8 4、11、14日10]}) def get_round (change_type,价格,,,changed_val): “““ 策略设计 “““ if change_type ==, 0: return 轮(changed_val/(price +, changed_val), *, 100, 2) elif change_type ==, 1: return 轮(changed_val/(price 作用;changed_val), *, 100, 2) 其他: print (f # 39;{改变},is not 存在# 39;) #,策略实现 df(& # 39;轮# 39;],=,df.apply (lambda x:, get_round (x [& # 39; change_type& # 39;],, x[& # 39;价格# 39;],,x[& # 39;改变# 39;]),轴=1)map (), (), applymap()三者在熊猫中有什么区别