根据两列在数据框中分组数据

时间:2018-09-01 01:09:31

标签: pandas dataframe

我有输入:

       Date         Topic      Group     Return
       1/9/2018       X          A         a
       1/9/2018       Y          A         a
       1/9/2018       Z          A         a
       1/9/2018       K          B         a
       1/9/2018       L          B         a
       1/10/2018      M          C         b 
       1/10/2018      N          C         b
       1/10/2018      W          A         b

如何获得以下输出: 输出

         Date         Group       Topic         Return
        1/9/2018       A         X, Y , Z         a
                       B         K,L              a
        1/10/2018      A         W                b
                       C         M, N             b

非常感谢您

2 个答案:

答案 0 :(得分:2)

IIUC groupbyagg

df.groupby(['Date','Group']).Topic.agg(','.join).to_frame('Topic')
Out[1270]: 
                 Topic
Date      Group       
1/10/2018 A          W
          C        M,N
1/9/2018  A      X,Y,Z
          B        K,L

答案 1 :(得分:2)

从@Wen的公司领取。聚合多个列。

In [458]: df.groupby(['Date', 'Group'], sort=False).agg(
                     {'Topic': ', '.join, 'Return': 'first'})
Out[458]:
                   Topic Return
Date      Group
1/9/2018  A      X, Y, Z      a
          B         K, L      a
1/10/2018 C         M, N      b
          A            W      b