如何从Pandas DataFrame的字符串(对象)列中提取字母
Pandas 提取字符串列字母并去重大写的实现
需求明确:从混合字母和数字的字符串列里,提取所有字母,转成大写后按首次出现的顺序去掉重复字母,生成目标新列。对应示例:
输入值:GE5000341、R22256544443、PDalirnamm、AAddda
预期输出:GE、R、PDALIRN、AD直接可用的代码:
用Pandas配合自定义函数就能实现:import pandas as pd # 构造示例数据,实际替换成你的DataFrame即可 df = pd.DataFrame({ 'original': ['GE5000341', 'R22256544443', 'PDalirnamm', 'AAddda'] }) def clean_string(s): # 提取所有字母并转为大写 all_letters = ''.join([c for c in s if c.isalpha()]).upper() # 去重并保留首次出现的顺序 unique_chars = [] seen = set() for char in all_letters: if char not in seen: seen.add(char) unique_chars.append(char) return ''.join(unique_chars) # 生成目标新列 df['target_col'] = df['original'].apply(clean_string) # 查看结果 print(df)代码逻辑拆解:
- 提取字母:用列表推导式直接筛选字符串中的字母,拼接后转大写,比正则表达式更简洁直观。
- 去重处理:用集合记录已出现的字母,遍历大写后的字母串,仅保留首次出现的字符,保证顺序不变。
- 列应用:通过
apply将处理函数作用到原始列的每一行,生成目标新列。
内容的提问来源于stack exchange,提问作者Isaacnfairplay
相关产品推荐
相关产品推荐

