在Pandas中如何基于+-符号将单列数据拆分为两个新列
实现方法
核心逻辑是针对你给出的样本,每个open列的字符串长度均为偶数,按长度对半切割即可,也可以用正则匹配适配后续可能的规则扩展:
方法1:直接对半切片(性能最高,适配现有所有样本)
import pandas as pd df = pd.DataFrame({'open': ['-2.5+2.5', '+3-3', '-1.5+1.5', '-1+1', '+3.5-3.5', 'PKPK']}) # 计算每个字符串的半长直接切片 half_len = df['open'].str.len() // 2 df['open1'] = df.apply(lambda x: x['open'][:half_len[x.name]], axis=1) df['open2'] = df.apply(lambda x: x['open'][half_len[x.name]:], axis=1) # 提取目标列 result = df[['open1', 'open2']]
运行后result完全匹配你需要的输出格式。
方法2:正则匹配(适合规则扩展场景)
如果后续open列的格式可能调整,可以用正则匹配指定格式的片段:
# 正则规则:匹配带正负号的数值(支持小数)或者PK字符串,分为两组 extract_pat = r'([+-]?\d*\.?\d+|PK)([+-]?\d*\.?\d+|PK)' df[['open1', 'open2']] = df['open'].str.extract(extract_pat) result = df[['open1', 'open2']]
内容的提问来源于stack exchange,提问作者Canovice
相关产品推荐
相关产品推荐

