我正在尝试使用pandas和str.extract将多个列中的字符串模式提取到单个结果列中。
我的示例数据帧如下。
field1 field2
ab1234 ab1234
ac1234
qw45 rt23
c1234b cb1234
cv 1234dd
...
我想将“1234”(编辑:任何4位整数,而不仅仅是“1234”)从任一列(本例中是field1和field2)提取到一个新的结果列中,以获得下面所需的结果
field1 field2 result
ab1234 ab1234 1234
ac1234 1234
qw45 rt23
c1234b cb1234 1234
cv 1234dd 1234
...
我试图使用pandas str.extract来获得我想要的结果,但是,我没有成功如下。
import pandas as pd
import numpy as np
import re
df = pd.DataFrame({'field1':['ab1234','ac1234','qw45', 'c1234b', 'cv'],
'field2':['ab1234','','rt23','cb1234', '1234dd']})
df['result'] = df[['field1', 'field2']].apply(lambda x:
x.str.extract(r'(\d{4})', flags = re.IGNORECASE, expand =
False)).any(axis=1)
print(df)
以上只返回布尔结果。我想知道以上是否可以转换为返回实际模式,或者有其他方法来解决这个问题?
提前非常感谢。
编辑:抱歉,我应该提到的模式可以是任何4位整数,而不仅仅是'1234'。因此,我希望result列返回这4位数字。