美文网首页
pandas map与apply

pandas map与apply

作者: 郭彦超 | 来源:发表于2021-03-23 15:35 被阅读0次

    map()方法

    通过df.(tab)键,发现df的属性列表中有apply() 和 applymap(),但没有map().
    map()是python 自带的方法, 可以对df某列内的元素进行操作, 我个人最常用的场景就是有toward_dict的映射关系 ,为df中的toward匹配出结果,

    toward_dict = {1: '东', 2: '南', 3: '西', 4: '北'}
    df = pd.DataFrame({'house' : list('AABCEFG'),
                       'price' : [100, 90, '', 50, 120, 150, 200],
                       'toward' : ['1','1','2','3','','3','2']})
     
    df['朝向'] = df.toward.map(toward_dict);df
    
    
    代码运行结果

    结果就是没有匹配出来, why???
    因为df.toward这列数字是str型的, toward_dict中的key是int型,下面修正操作下:两个思路:

    第一种思路:`toward_dict`的key转换为str型
    toward_dict2 = dict((str(key), val) for key, val in toward_dict.items())
    
    
    完美解决
    # 第二种思路, 将df.toward转为int型
    df.toward = df.toward.map(lambda x: np.nan if x == '' else x).map(int,na_action='ignore')
    df['朝向2'] = df.toward.map(toward_dict);df
    
    
    结果呈现

    apply() 方法

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

    先将上面的测试中的map替换为apply,看看怎么样?
    结果报错了, ValueError, 还是老老实实写实际操作例子吧 ?
    参考DataFrame.apply官方文档
    文档中第一个参数:

    func : function
    Function to apply to each column or row.

    意思即是, 将传入的func应用到每一列或每一行,进行元素级别的运算
    第二个参数:

    axis : {0 or ‘index’, 1 or ‘columns’}, default 0
    Axis along which the function is applied:
    0 or ‘index’: apply function to each column. # 注意这里的解释
    1 or ‘columns’: apply function to each row.

    举例:


    这里写图片描述

    这个要特别注意的,

    相关文章

      网友评论

          本文标题:pandas map与apply

          本文链接:https://www.haomeiwen.com/subject/bxufhltx.html