我有一个要删除的后缀列表,例如suffixes = ['inc','co','ltd']
。
我想从Pandas数据框中的列中删除这些,而我一直在这样做:
df['name'] = df['name'].str.replace('|'.join(suffixes), '')
。
这可行,但是如果剩下的只是数字,我不想删除足够的内容。例如,如果名称为123 inc
,则我不想删除'inc'。有没有办法在代码中添加此条件?
答案 0 :(得分:2)
使用正则表达式-> negative lookbehind
。
例如:
suffixes = ['inc','co','ltd']
df = pd.DataFrame({"Col": ["Abc inc", "123 inc", "Abc co", "123 co"]})
df['Col_2'] = df['Col'].str.replace(r"(?<!\d) \b(" + '|'.join(suffixes) + r")\b", '', regex=True)
print(df)
输出:
Col Col_2
0 Abc inc Abc
1 123 inc 123 inc
2 Abc co Abc
3 123 co 123 co
答案 1 :(得分:1)
尝试将^[^0-9]+
添加到后缀。它是一个REGEX,字面意思是“至少一个以前不是数字字符”。代码如下:
non_numeric_regex = r"^[^0-9]+"
suffixes = ['inc','co','ltd']
regex_w_suffixes = [non_numeric_regex + suf for suf in suffixes]
df['name'] = df['name'].str.replace('|'.join(regex_w_suffixes ), '')