将基于条件合并pandas的行
将基于条件合并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
有人能提出更高效或简单的方法吗?
提前感谢您的帮助。
从上面的内容可以看出,问题的原因是想要根据条件来合并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的行的操作。