<p>也许,它会帮助你</p>
<pre class="lang-py prettyprint-override"><code>>>> import re
>>> import pandas
>>> df = pandas.DataFrame([["AGHXXXJ002", "XXX"], ["AGHGHJJ002", "GHJ"], ["ABCRTGHP001", "RTGH"], ["ABCDFFP01", "DFF"], ["ABCXGHJD09", "XGH"]], columns=["Col A", "Col B"])
>>> df
Col A Col B
0 AGHXXXJ002 XXX
1 AGHGHJJ002 GHJ
2 ABCRTGHP001 RTGH
3 ABCDFFP01 DFF
4 ABCXGHJD09 XGH
>>> def get_position(row):
... match = re.search(row["Col B"], row["Col A"])
... if match:
... return match.span()
... else:
... return [-1, -1]
...
>>> df["Position"] = df.apply(get_position, axis=1)
>>> df
Col A Col B Position
0 AGHXXXJ002 XXX (3, 6)
1 AGHGHJJ002 GHJ (3, 6)
2 ABCRTGHP001 RTGH (3, 7)
3 ABCDFFP01 DFF (3, 6)
4 ABCXGHJD09 XGH (3, 6)
>>> def get_preceding(row):
... if row["Position"][0] == -1:
... return ""
... return row["Col A"][:row["Position"][0]]
...
>>> df["Preceding Chars"] = df.apply(get_preceding, axis=1)
>>> df
Col A Col B Position Preceding Chars
0 AGHXXXJ002 XXX (3, 6) AGH
1 AGHGHJJ002 GHJ (3, 6) AGH
2 ABCRTGHP001 RTGH (3, 7) ABC
3 ABCDFFP01 DFF (3, 6) ABC
4 ABCXGHJD09 XGH (3, 6) ABC
>>> def get_following(row):
... if row["Position"][1] == -1:
... return ""
... return row["Col A"][row["Position"][1]:]
...
>>> df["Following Chars"] = df.apply(get_following, axis=1)
>>> df
Col A Col B Position Preceding Chars Following Chars
0 AGHXXXJ002 XXX (3, 6) AGH J002
1 AGHGHJJ002 GHJ (3, 6) AGH J002
2 ABCRTGHP001 RTGH (3, 7) ABC P001
3 ABCDFFP01 DFF (3, 6) ABC P01
4 ABCXGHJD09 XGH (3, 6) ABC JD09
</code></pre>