【发布时间】:2023-03-03 05:42:18
【问题描述】:
我正在尝试使用 Pandas 和 str.extract 将字符串模式从多个列中提取到单个结果列中。
我的示例数据框如下。
field1 field2
ab1234 ab1234
ac1234
qw45 rt23
c1234b cb1234
cv 1234dd
...
我想从任一列(在本例中为 field1 和 field2)中提取“1234”(编辑:任何 4 位整数,而不仅仅是“1234”)到一个新的结果列中,以在下面获得所需的结果
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”。因此,我希望结果列返回这 4 位数字。
【问题讨论】:
标签: python regex pandas extract multiple-columns