map (), (), applymap()三者在熊猫中有什么区别

  

地图(),适用于(),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

地图(),适用于(),applymap()三者在熊猫中有什么区别

map()方法

通过df。(选项卡)键,发现df的属性列表中有应用()和applymap(),但没有地图()。
map()是python自带的方法,可以对df某列内的元素进行操作,我个人最常用的场景就是有<代码> toward_dict> 匹配出结果,

, df(& # 39;朝向& # 39;],=,df.toward.map (toward_dict); df

地图(),适用于(),applymap()三者在熊猫中有什么区别“> <br/> </p> <p>结果就是没有匹配出来,为什么? ? ? <br/>因为<代码> df。对</代码>这列数字是str型的,<代码> toward_dict> </代码中关键是int型的,下面修正操作下:两个思路:</p> <pre类=第一种思路:“toward_dict”的关键转换为str型   toward_dict2 =, dict (str(关键),val), for 关键,,val 拷贝toward_dict.items ())

地图(),适用于(),applymap()三者在熊猫中有什么区别

#,第二种思路,,将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

地图(),适用于(),applymap()三者在熊猫中有什么区别

apply()方法

更新时间:2018-08-10
我目前的实际工作中使用<代码> apply() 方法比较少,所以整理的内容比较简陋,后续涉及到数据分析方面可能会应用比较多些。

先将上面的测试中的<代码> 地图替换为<代码> ,看看怎么样?
结果报错了,<代码> ValueError> 参考DataFrame。应用官方文档
文档中第一个参数:

func:
函数适用于每一列或行。

意思即是,将传入的<代码> func> 第二个参数:

轴:{0或“指数# 39;1或“列# 39;},默认0
轴沿着这功能应用:
0或“指数# 39;:函数应用到每一列。#注意这里的解释
1或“列# 39;:函数应用到每一行。

举例:

地图(),适用于(),applymap()三者在熊猫中有什么区别

这个要特别注意的,
没有继续使用地图里的DF,是因为DF。房子是字符串,不能进行<代码> np.sum 运算,会报的错。
<代码> 2018年12月3日新增:
最近在工作中使用到了<代码> pandas.apply() 方法,更新如下:

背景介绍:

一个<代码> df> change_type> 为现价,<代码> 改变为涨降价的绝对值,现求:涨降价的比例,精确到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()三者在熊猫中有什么区别