如果索引按顺序将多行合并为单行

问题描述

看起来我想将动物列中的多行转换为单行。但是,只有当它们满足序列号和小写字母时才有条件。之后,它重新启动一个索引成为连续的

所以,我有一个像:

    Animal 
 0  Bulldog
 1  hatcet 
 3  Parrot 
 7  Carrot 
 8  Jack Dog
 9  Kanggaroo
 10 helma  

我想要实现的是

    Animal 
 0  Bulldog hatcet 
 1  Parrot
 2  Carrot 
 3  Jack Dog
 4  Kanggaroo helma
 

任何人都可以通过这个?

解决方法

我们可以通过首先使用 str.contains 创建一个布尔掩码,然后对掩码进行累积和来识别连续块。然后将这些连续块上的列 Animal 分组并使用 join

b = df['Animal'].str.contains(r'^[A-Z]').cumsum()
df[['Animal']].groupby(b,as_index=False).agg(' '.join)

            Animal
0   Bulldog hatcet
1           Parrot
2           Carrot
3         Jack Dog
4  Kanggaroo helma