我有一个带有两个文本列的数据框。一列的列值(比如B列)基本上是另一列(比如a列)整个字符串的子字符串/部分。我想在每一列中找到模式,并检查A列字符串的位置或起始字母的趋势。因此我想生成三列,一列是子字符串的位置,另外两列是前面和后面的字符
以下是dataframe的外观:
| Col A | Col B |
----------------------
AGHXXXJ002 | XXX |
AGHGHJJ002 | GHJ |
ABCRTGHP001 | RTGH |
ABCDFFP01 | DFF |
ABCXGHJD09 | XGH |
现在,基于上述模式,我想生成两列:
| Col A | Col B | Position | Preceding Chars | Following Chars |
-------------------------------------------------------------------------------------
AGHXXXJ002 | XXX | [3, 5] | AGH | J002 |
(Because XXX starts at index 3 and ends at 5) | | |
AGHGHJJ002 | GHJ | [3, 5] | AGH | J002 |
ABCRTGHP001 | RTGH | [3, 6] | ABC | P001 |
ABCDFFP01 | DFFP | [3, 5] | ABC | 01 |
ABCXGHJD09 | XGH | [3, 5] | ABC | D09 |
HGMQQUTV01 | HGM | [0, 2] | NaN | QQUTV01 |
GBHUJJS099 | BHU | [1, 3] | G | JJS099 |
这是我想要的输出。我尝试使用for循环并删除子字符串,但从未执行,因此删除了代码。到目前为止,我一直在手动操作,但有超过5万行,这是不可行的。此外,“位置”列可以拆分为两个不同的列:“开始位置”和“结束位置”
因为我们处理的是行级操作和字符串,所以没有一个向量化的方法来实现这一点
让我们使用
str.find
和np.char.find
来创建数据帧也许,它会帮助你
相关问题 更多 >
编程相关推荐