如何从Pandas DataFrame列中提取数字与字母F的组合?
解决方案
用正则表达式配合Pandas的str.replace()方法就能精准处理这类格式转换需求,只修改符合数字-F-xxx或数字-F格式的内容,其他格式保持原样。
具体代码实现
import pandas as pd # 示例DataFrame df = pd.DataFrame({'AST_NAME': ['2F', '3-F-A', 'SwB', '5-F', 'X123', '7-F-B-C']}) # 执行格式转换 df['AST_NAME'] = df['AST_NAME'].str.replace(r'^(\d+)-F.*', r'\1F', regex=True)
效果说明
处理后AST_NAME列的结果为:
| AST_NAME |
|---|
| 2F |
| 3F |
| SwB |
| 5F |
| X123 |
| 7F |
正则逻辑解释
^(\d+):匹配字符串开头的连续数字,并用括号捕获这部分内容;-F.*:匹配紧随数字后的-F以及后续任意字符;\1F:将匹配到的内容替换为捕获的数字加上F,完美实现3-F-A转3F的需求,同时不影响2F、SwB这类原本符合要求或非目标格式的内容。
之前用lstrip()/rstrip()或截取字符的方法,因为无法精准匹配目标格式,容易误改非目标内容或处理不彻底,正则方法则能精准定位需要修改的条目,一次性解决问题。
内容的提问来源于stack exchange,提问作者Shraddha Jadhav
相关产品推荐
相关产品推荐

