zoukankan      html  css  js  c++  java
  • pandas列合并为一行

    dataframe利用pandas列合并为一行,类似于sqlGROUP_CONCAT函数。例如如下dataframe

      id_part         pred   pred_class v_id
    0       d  0 0.122817         woman   d1
    1       b     0.015449  other_label   d2
    2       5     0.019208          cat   d3
    3       d     0.050064          dog   d1
    

    想要变成如下形式:

      v_id   pred_class                     pred id_part
    0   d1   woman, dog  [0 0.122817 , 0.050064]       d
    1   d2  other_label               [0.015449]       b
    2   d3          cat               [0.019208]       5
    

    利用 groupby 去实现就好,spark里面可以用 concat_ws 实现,可以看这个 Spark中SQL列合并为一行,而这里没有 concat_ws 只能用另外一种方式实现:

    df2 = other_label.groupby(['v_id']).agg({'pred_class': [', '.join],
                                             'pred': lambda x: list(x),
                                             'id_part': 'first'}).reset_index()
    

    得到结果为:

      v_id   pred_class                     pred id_part
    0   d1   woman, dog  [0 0.122817 , 0.050064]       d
    1   d2  other_label               [0.015449]       b
    2   d3          cat               [0.019208]       5
    

    而还有另外一种方式,但是可能会输出少了那么几列:

    df1 = data.groupby(['v_id', 'id_part'])['pred_class'].apply(lambda x: list(x)).reset_index()
    
      v_id id_part     pred_class
    0   d1       d   [woman, dog]
    1   d2       b  [other_label]
    2   d3       5          [cat]
    
  • 相关阅读:
    GC(垃圾分代收集)
    排序算法总结
    Redis中的数据结构
    事务的隔离性(续篇)
    手写Spring mvc框架 (二)
    MySql日志与事务的隔离级别
    手写Spring mvc框架 (一)
    IO流
    随笔三(Ajax)
    关于博主noble_
  • 原文地址:https://www.cnblogs.com/TTyb/p/9717554.html
Copyright © 2011-2022 走看看