我有一个数据框:
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 |
以下内容应该可以满足您的要求。对于 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