Pandas使用笔记

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使用笔记)