Python 3.x 选择列中两个字符串之间的所有单元格

Python 3.x 选择列中两个字符串之间的所有单元格,python-3.x,pandas,Python 3.x,Pandas,我以前把这个问题贴在了“using.between”上,是“for string values not working in python”,我不够清楚,但我无法编辑,所以我在这里清晰地重新发布了这个问题 我有一个数据框。[0,61]中有字符串。在[0,69]中,我有一个字符串。我想将[0,62:68]单元格中的所有数据在这两个单元格之间切片并合并,然后将结果粘贴到[1,61]中。随后,[0,62:68]将为空,但这并不重要 但是,我有几百个文档,我想编写一个脚本,在所有文档上执行。[0,61]

我以前把这个问题贴在了“using.between”上,是“for string values not working in python”,我不够清楚,但我无法编辑,所以我在这里清晰地重新发布了这个问题

我有一个数据框。[0,61]中有字符串。在[0,69]中,我有一个字符串。我想将[0,62:68]单元格中的所有数据在这两个单元格之间切片并合并,然后将结果粘贴到[1,61]中。随后,[0,62:68]将为空,但这并不重要

但是,我有几百个文档,我想编写一个脚本,在所有文档上执行。[0,61]和[0,69]中的字符串始终存在于所有文档中,但位于该列的不同位置。所以我试着使用:

For_Paste=df[0][df[0]。介于('工作说明/工作说明书','附加要求/支持文件',包括=False)]

但我得到的输出是:Series([],Name:0,dtype:object)

我希望有一个列表或数组,其中包含我可以合并和粘贴的所需数据。谢谢


如果要在数据帧
df
的列
col
上选择两个索引(例如
idx\u start
idx\u end
)之间的行(不包括这两行),则需要使用

df.loc[idx_start + 1 : idx_end, col]
要查找与字符串
s
匹配的第一个索引,请使用

idx = df.index[df[col] == s][0]
对于您的情况,要返回这两个索引之间的一系列行,请尝试以下操作:

start_string = 'DESCRIPTION OF WORK / STATEMENT OF WORK'
end_string = 'ADDITIONAL REQUIREMENTS / SUPPORTING DOCUMENTATION'
idx_start = df.index[df[0] == start_string][0]
idx_end = df.index[df[0] == end_string][0]
For_Paste = df.loc[idx_start + 1 : idx_end, 0]

看一看这张照片。您使用df[0]所做的是在(…)之间比较字符串,选择字符串s满足s>=left和s Thank you Fabian的所有行。对于第四行,我得到一个“索引器:索引0超出大小为0的轴0的界限”。我试图解决这个问题,但我无法解决。这意味着df。[0]==end\u字符串对于所有行都是False。因此,请确保end_字符串与数据帧中的字符串完全相同。字符串可能稍有不同(例如,空间缺失或太多等),这正是我最终要做的。我执行了一行代码返回:“附加需求/支持文档”的位置,但什么也没有得到。因此,我使用这段代码来防止截断单元格内的数据:pd.set_option('display.max_colwidth',-1),这表明我在第二个字符串中漏掉了“Requirements”。现在效果很好。谢谢