将基于条件合并pandas的行

7 浏览
0 Comments

将基于条件合并pandas的行

给定一个Pandas Dataframe df,具有列名'Session'和'List':

我能否将相同'Session'值的'List'值分组在一起?

我的方法

我尝试通过创建一个新的数据帧,并在遍历初始数据帧的行时保持一个会话计数器来解决这个问题,如果我看到会话发生了变化,我会将计数器递增。

如果会话没有发生变化,我会将对应于该行值的List值附加上逗号。

每当会话发生变化时,我使用strip方法去掉最后的逗号(多余的)。

初始数据帧

   Session  List  
0     1      a    
1     1      b    
2     1      c     
3     2      d     
4     2      e    
5     3      f     

所需数据帧

   Session  List  
0     1      a,b,c   
1     2      d,e  
2     3      f     

有人能提出更高效或简单的方法吗?

提前感谢您的帮助。

0
0 Comments

从上面的内容可以看出,问题的原因是想要根据条件来合并pandas的行。解决方法是使用groupby和apply函数,然后再用reset_index函数将结果重新设置索引。具体的代码如下所示:

df.groupby('Session')['List'].agg(','.join).reset_index()

运行结果如下所示:

   Session   List
0        1  a,b,c
1        2    d,e
2        3      f

通过使用groupby函数将数据按Session分组,然后使用apply函数将每组的List列用逗号连接起来。最后,使用reset_index函数将结果重新设置索引。这样就实现了根据条件合并pandas的行的操作。

0