如何使用表中的pandas将字符串行组合成一行,或者如何使用python将语句中列的不同行连接起来?

2024-04-19 10:36:39 发布

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

输入:

LineNo  word_num    left    top  width  text
1       1           322     14   14     My
1       2           304     4    41     Name
1       3           322     5    9      is
1       4           316     14   20     Raghav
2       1           420     129  34     Problem 
2       2           420     31   27     just
2       3           420     159  27     got
2       4           431     2    38     complicated
1       1           322     14   14     #40
1       2           304     4    41     @gmail.com   
2       1           420     129  34     2019 
2       2           420     31   27     January

如您所见,有列lineNolefttopword\u num,因此我尝试使用这两个列获取一些逻辑,也许我可以实现我的解决方案。你知道吗

我想在输出中做一些调整,实际上这个输出是在转换成图像后通过一个PDF来的,所以它抓住了整行,因为整行来了,输出没有意义,我现在想做的是将文本以一种有意义的方式分组。例如 假设我通过使用以下命令得到的输出:

g=df['line\u num'].ne(df['line\u num'].shift()).cumsum() out='\n'。加入(数据框groupby(g) ['text'].agg(''.join)) 打印(输出)

输出=

“我叫拉格哈夫40@gmail.com你知道吗

问题变得复杂了“2019年1月”

预期输出=

“我叫拉格哈夫

*40个

你知道吗@gmail.com你知道吗

问题变得复杂了

2019年1月”

无论它们是否在同一行中,它们都在不同的行中,但逻辑上分组在不同的行中。你知道吗

在我看来,也许我们可以通过以下步骤来实现: enter image description here a) 如果x距离<;阈值,则将同一行上的单词分组

b)如果y距离小于阈值,则下一行的单词与上一行的单词分组

阈值为宽度(图像)/100;x距离从左侧计算;y距离从顶部计算。你知道吗

我们能这样做吗? 如果问题不够清楚,请告诉我! 谢谢!你知道吗

添加的图像,我正试图得到输出,数据在这是有点复杂,我已经改变了它根据我!你知道吗


Tags: text图像com距离dftopline阈值
2条回答

将双精度join-与^{}一起使用,然后对输出Series

out = '.....'.join(df.groupby('LineNo')['text'].agg(' '.join))
print (out)
My Name is Raghav.....Roll No. # 242

使用^{}的另一种解决方案:

out = df.groupby('LineNo')['text'].agg(' '.join).str.cat(sep='.....')

编辑:

g = df['LineNo'].ne(df['LineNo'].shift()).cumsum()
out = '.....'.join(df.groupby(g)['text'].agg(' '.join))
print (out)
My Name is Raghav.....Roll No. # 242.....hello the problem just.....got more complicated !!!!

要回答您的第二个问题,可以尝试像这样遍历该列。你知道吗

phrase = ""

for i in range(0, df.count):
    if type(df.iat[i, 'text']) == str:
        phrase = phrase + " " + df.iat[i, 'text']

要添加空格/…,我同意耶斯雷尔的观点,请使用结构类别方法。你知道吗

相关问题 更多 >