Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列的一行与另一列的下一行之间的差异_Python_Python 3.x_Pandas - Fatal编程技术网

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

Python 列的一行与另一列的下一行之间的差异,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据框,看起来像这样- 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 1

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

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
IIUC,你可以做:

mask = df['x2'].shift().sub(df['x1']).abs()
df.Text.groupby(mask.gt(75).cumsum()).apply(' '.join)
df.groupby(mask.gt(75).cumsum()).agg({'Img':list, 'Text':' '.join})
输出:

0    Shinners cary Tate Adress)
1       SHipper ACC OLN MLITTHS
2                Not necotiapla
3                     issven OY
Name: Text, dtype: object
             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
如果需要Img列,可以执行以下操作:

mask = df['x2'].shift().sub(df['x1']).abs()
df.Text.groupby(mask.gt(75).cumsum()).apply(' '.join)
df.groupby(mask.gt(75).cumsum()).agg({'Img':list, 'Text':' '.join})
输出:

0    Shinners cary Tate Adress)
1       SHipper ACC OLN MLITTHS
2                Not necotiapla
3                     issven OY
Name: Text, dtype: object
             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

为什么托运人不属于第一组?这是可行的!非常感谢。是否有方法添加已分组在一起的行的索引?