当与另一个字符串列表匹配时从一列中提取字符串以创建新列

问题描述 投票:0回答:1

我有一个数据框:

A_1
AB546-RT GTY 3
杨百翰大学345 456 2
AB546 HYT 1
BYU345 BWER 34

并且,搜索列表为 [546, 345]。如果字符串有任意数量的搜索列表,则提取整个字符串。

我想创建一个新的字母数字字符串列,而不像这样的字符串的其他部分

A_1 A_2
AB546-RT GTY 3 AB546
杨百翰大学345 456 2 杨百翰大学345
AB546 HYT 1 AB546
BYU345 BWER 34 杨百翰大学345
python pandas string dataframe
1个回答
0
投票

以下内容应该可以满足您的要求。对于 A_1 的每一行,我们在将连字符和空格视为字符串分隔符后拆分字符串,然后找到包含搜索列表项之一的元素作为子字符串。

df = pd.DataFrame.from_dict({
    "A_1":[
        "AB546-RT GTY 3",
        "BYU345 456 2",
        "AB546 HYT 1",
        "BYU345 BWER 34"
    ]
})

targets = ["546", "345"]
df["A_2"] = df["A_1"].apply(lambda x: next(y for y in x.replace("-", " ").split() 
                                           if targets[0] in y or targets[1] in y))

print(df)

输出是:

              A_1     A_2
0  AB546-RT GTY 3   AB546
1    BYU345 456 2  BYU345
2     AB546 HYT 1   AB546
3  BYU345 BWER 34  BYU345
© www.soinside.com 2019 - 2024. All rights reserved.