Pandas:按相似的列值对行进行分组

alexgg94

有一个看起来像这样的pandas df:

      x  column     word  size  y   
0  1552       0    word1   218  2           
1  1775       1    word2    53  2        
2  1999       2    word3   163  2               
3  2200       3    word4   142  2                
4  2345       4    word5   129  2 

我想根据条件对行进行分组: abs(current_row_x + current_row_size - next_row_x) < 10

因此,此处所需的 df 将是:

      x  column     word         size  y   
0  1552       0     word1 word2   271  2                   
1  1999       2     word3         163  2               
3  2200       3     word4 word5   271  2                

我现在尝试的是以下内容:

df = df.groupby((abs(df.x + df.size - df.x.shift(1)) < 10).cumsum()).agg({'y':'min', 'x':'min', 'size':'sum', 'column':'min', 'word':' '.join}) 
                                                                                                   
                                                                                                        

但是结果 df 并不是我所期望的,而且 groupby 条件似乎也被忽略了。

任何可能的方法?谢谢

alexgg94

经过几个小时的努力,我让它工作了。

从这个df开始:

      x  column     word  size  y   
0  1552       0    word1   218  2           
1  1775       1    word2    53  2        
2  1999       2    word3   163  2               
3  2200       3    word4   142  2                
4  2345       4    word5   129  2 

我做的第一件事是添加另一列x1表示xsize的总和

df["x1"] = df["x"] + df["size"]

所以现在,我的 df 看起来像这样:

      x  column   word  size  y    x1
0  1552       0  word1   218  2  1770
1  1775       1  word2    53  2  1828
2  1999       2  word3   163  2  2162
3  2200       3  word4   142  2  2342
4  2345       4  word5   129  2  2474

现在,我用这个条件进行分组(df.x - df.x1.shift(1)) > 10)

df = df.groupby(((df.x - df.x1.shift(1)) > 10).cumsum()).agg({'y':'min', 'x':'min', 'size':'sum', 'column':'min', 'word':' '.join})

结果是预期的:

   y     x  size  column         word
0  2  1552   271       0  word1 word2
1  2  1999   163       2        word3
2  2  2200   271       3  word4 word5

让它工作,但我真的不知道为什么gouping条件(abs(df.x + df.size - df.x.shift(1)) < 10)失败。也许有经验的人可以解释一下。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据名称相似的列对行进行分组

按相似性对行进行分组

如何在scala中对相似的列值进行分组?

如何在Excel中对相似的行进行分组,并汇总每个组的值?

如何在SQL Server中对相似的行进行分组

如何在R中对相似的行进行分组

用相似的字符串对行进行分组

如何按列值对熊猫数据框的行进行分组?

MySQL:按列值前缀对行进行分组

Python / Pandas-如何按两列分组并用第二列中第三列的值对行进行计数

按相似的列名对查询结果进行分组

按多个值对行进行分组

如何根据相似的值对列表进行分组

在android中对相似的JSON值进行分组

按列值对行进行分组,并在分组时以不同方式处理某些行

MySQL根据第二个表中的条目对相似的行进行分组

如何对相似的行进行分组,并在 R 中查询某些行列?

如何按 Pandas 中的相似行进行映射?

Python Pandas:按相似的文件名对目录中的文件进行分组,并按特定顺序连接数据帧

根据列总和值对行进行分组

使用两个字段应用“分组依据”后,将出现重复的行。如何对相似的行进行分组?

如何按共享列值对CSV行进行分组和求和?

在Google饼图中按列值/类别对行进行分组

Pandas 如何按列的值对列进行分组

Pandas:如何按不同条件对多行进行分组

按条件对行进行分组

按值组的连续日期范围对行进行分组

按多列对 Pandas Dataframe 进行分组以获得特定值

如何对相似的 GTFS 行程进行分组