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