Разница между строкой столбца и следующей строкой другого столбца - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть фрейм данных, который выглядит следующим образом -

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, сгруппируйте значения в «Текст» вместе, чтобы сформировать новый фрейм данных

Например -

Ожидаемый результат -

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

1 Ответ

1 голос
/ 30 сентября 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...