Pandas DataFrame字符串拆分为两列时如何保留分隔符
Pandas拆分字符串列保留分隔符方案
你当前拆分后分隔符丢失是因为str.split默认会把匹配到的分隔符直接剔除,只返回拆分后的内容片段,要保留分隔符可以用以下两种方法实现:
方法1:正则捕获组包裹分隔符
给拆分用的正则关键词加上捕获括号,str.split遇到正则捕获组时,会把匹配到的分隔符作为单独的列返回:
# 注意调整正则里关键词前后的空格,匹配你实际数据的格式 split_pattern = r'(Modified|Reset|Rebooted|Created|Disabled)' new_auditlog = auditlog['Description'].str.split(split_pattern, n=1, expand=True) # 拆分后共3列:0列为关键词前的内容、1列为匹配到的关键词、2列为关键词后的内容 # 可根据你的业务需求拼接字段 auditlog["Action"] = new_auditlog[0] + new_auditlog[1] # 前缀+关键词作为Action auditlog["Something"] = new_auditlog[2] auditlog.drop(columns=["Description"], inplace=True)
方法2:零宽断言拆分(拆分后仍为2列)
如果不需要把关键词单独拆成一列,希望拆分后关键词直接附在某一段内容里,可以用零宽断言匹配分隔符的边界位置拆分,不会吃掉分隔符:
# 零宽后行断言,匹配关键词后的位置拆分,关键词会保留在第一列末尾 split_pattern = r'(?<=Modified|Reset|Rebooted|Created|Disabled)' new_auditlog = auditlog['Description'].str.split(split_pattern, n=1, expand=True) auditlog["Action"] = new_auditlog[0] # 已包含关键词 auditlog["Something"] = new_auditlog[1] auditlog.drop(columns=["Description"], inplace=True)
如果需要把关键词附在第二列开头,改用正向先行断言即可:r'(?=Modified|Reset|Rebooted|Created|Disabled)'
内容的提问来源于stack exchange,提问作者René Christensen
相关产品推荐
相关产品推荐

