【发布时间】:2021-06-26 11:18:02
【问题描述】:
import pandas as pd
df = pd.DataFrame({'Reference':["PO: TK42-8",
"PO GQ5-42",
"PO:HEA-238/239",
"PO: 4501005609 Purchaser: Mariana Toledo Blanco",
"FITN7-26",
"PO#CP4-62",
"PO 4501004752 Purchaser Yang Gao / Split from S94964",
"GUANGDONG YOULONG ELECTRICAL APPLIANCES CO.,LTD // PO#GQY6-17"]
})
从上面的 df 中,我一直在尝试提取两条信息(如果有的话),但成功率最低。从而创建 2 个新列,如下面所需的 df 所示。
df2 = pd.DataFrame({'Reference':["PO: TK42-8",
"PO GQ5-42",
"PO:HEA-238/239",
"PO: 4501005609 Purchaser: Mariana Toledo Blanco",
"FITN7-26",
"PO#CP4-62",
"PO 4501004752 Purchaser Yang Gao / Split from S94964",
"GUANGDONG YOULONG ELECTRICAL APPLIANCES CO.,LTD // PO#GQY6-17"],
"PO":["TK42-8", "GQ5-42", "HEA-238/239", "4501005609", "FITN7-26","CP4-62", "4501004752", "GQY6-17" ],
"Purchaser":["", "", "", "Mariana Toledo Blanco", "","", "Yang Gao", "" ],
})
到目前为止,我已经看到了一些成功:
df['PO'] = df['Reference'].str.extract(r"PO:.*?([ \w.\S-]+)")
df['Purchaser'] = df['Reference'].str.extract(r"Purchaser.*?([ \w.*]+)")
但是,我错过了如何正确编写每个函数括号内每种情况的所有微妙可能性的脚本。
【问题讨论】:
-
看看你的数据框,我认为你可以使用
r'PO\W+(\S+)'来提取PO和提取Purchaser使用r'Purchaser\W+((?:\w+\s?)+)(?:\s|$)' -
@ShubhamSharma 不完全是。我更接近以下内容,但仍然缺少一些值。
df['PO'] = df['Reference'].str.extract(r"PO:\S|\s.*?([\w.\S-]+)") df['Purchaser'] = df['Reference'].str.extract(r"Purchaser.*?([ \w.*]+)") -
"FITN7-26"的条目上出现了一个问题。它前面没有PO。