美文网首页
Pandas使用笔记

Pandas使用笔记

作者: Babyzpj | 来源:发表于2017-10-16 11:02 被阅读0次

    pandas的groupby.apply函数的应用

    Eg: df为DataFrame类型
                  device_id  key1  key2 key3
           1    a            i     0    1
           2    b            j     1    1
           3    a            j     0    0
           4    c            k     1    1
           5    c            i     0    0  
           6    a            i     0    1
    
    case1:根据表df2的列表头'device_id',将相同device_id的后面各列对应的元素合并到一个列表中
         df1=df.groupby('device_id',as_index=0).agg(lambda arr:([x for x in arr]))
          print df1
                    device_id   key1  key2    key3
                 1     a     [i,j,i]  [0,0,0] [1,0,1]
                 2      b    [j]   [1]     [1]
                 3      c    [i,k]  [0,0]   [0,0]
            
    case2: 表df中,根据device_id,对其后面对应元素合并,并去重
          df2=df.groupby('device_id',as_index=0).agg(lambda arr:list(set([x for x in arr])))
          print df2
                 device_id  key1  key2 key3
           1       a        [i,j]  [0]  [1,0]
           2       b        [j]    [1]  [1]
           3       c        [i,k]  [0]  [0]
    
    case3: 假如df3如下图所示 
               id   sex
            0   a   [1, 1, 0, 1]
            1   b   [0, 1, 0]
            2   c   [1, 1, 0, 0, 0]
            3   d   [0, 1, 0, 0]
        若要将sex对应的元素为0或1,取每个元素中元素最多的数。eg:a对应的sex有3个1,大于0的个数故取1.而c中1的个数为2个,少于0的个数3个,取0.党元素个数相等,取0
    
        from collections import Counter
        df3["sex"]=df3["sex"].apply(lambda arr:Counter(arr).most_common(1)[0][0])   
        print df3
               id   sex
            0   a   1
            1   b   0
            2   c   0
            3   d   0

    相关文章

      网友评论

          本文标题:Pandas使用笔记

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