列的一行与另一列的下一行之间的差异

2024-06-01 06:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,看起来像这样-

Img  x1 y1  x2   y4  Height Text
7   165 87  236  101    14  Shinner s
8   240 87  274  101    14  cary
9   290 87  317  101    14  Tate
10  324 87  389  104    17  Adress)
11  608 87  673  101    14  SHipper
12  690 87  815  101    14  ACC OLN MLITTHS
13  903 87  933  101    14  Not
14  937 87  1018 101    14  necotiapla
35  906 162 953  175    13  issven
36  960 162 984  179    17  OY

我想计算一行的“x2”和下一行的“x1”之间的距离,如果它们之间的差值小于75,则将“Text”中的值组合在一起以形成一个新的数据帧

例如

预期产出-

Index Text
1     Shinners cary Tate Adress)
2     SHipper ACC OLN MLITTHS
3     Not necotiapla
4     issven OY

Tags: 数据textnotcaryaccx1x2oy
1条回答
网友
1楼 · 发布于 2024-06-01 06:36:10

IIUC,你可以做:

mask = df['x2'].shift().sub(df['x1']).abs()
df.Text.groupby(mask.gt(75).cumsum()).apply(' '.join)

输出:

0    Shinners cary Tate Adress)
1       SHipper ACC OLN MLITTHS
2                Not necotiapla
3                     issven OY
Name: Text, dtype: object

如果需要Img列,可以执行以下操作:

df.groupby(mask.gt(75).cumsum()).agg({'Img':list, 'Text':' '.join})

输出:

             Img                        Text
0  [7, 8, 9, 10]  Shinners cary Tate Adress)
1       [11, 12]     SHipper ACC OLN MLITTHS
2       [13, 14]              Not necotiapla
3       [35, 36]                   issven OY

相关问题 更多 >