Python Pandas中如何拼接固定文本与列提取的数字?
Pandas 拼接固定文本与提取数字的解决方案
首先,你需要从PROJEKT[BEZEICHNUNG]列提取到包含两个数字的列表,接下来可以通过以下几种方式生成目标列EINGRUPPIERUNG:
方法1:直接索引列表元素拼接
利用Pandas Series对列表类型的字符串索引支持,直接取出列表中的两个数字,转为字符串后与固定文本拼接:
import pandas as pd # 假设你的DataFrame名为df,且已将提取的数字列表存入extracted_numbers列 df['EINGRUPPIERUNG'] = 'P' + df['extracted_numbers'].str[0].astype(str) + ' Stufe ' + df['extracted_numbers'].str[1].astype(str)
方法2:用apply函数实现灵活拼接
如果需要处理列表长度不一致的情况(避免索引越界报错),可以自定义函数配合apply:
def build_group_label(row): nums = row['extracted_numbers'] if len(nums) == 2: return f"P{nums[0]} Stufe {nums[1]}" # 列表元素数量不符时返回默认值,可根据需求修改 return "格式不符" df['EINGRUPPIERUNG'] = df.apply(build_group_label, axis=1)
一步到位:提取+拼接合并操作
如果还没完成数字提取,可以直接从原始列提取并格式化,省去中间列:
df['EINGRUPPIERUNG'] = df['PROJEKT[BEZEICHNUNG]'].str.findall(r"\d+").apply( lambda x: f"P{x[0]} Stufe {x[1]}" if len(x) == 2 else None )
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

