Pandas如何高效拆分大括号内逗号分隔元素并展开为多行
高效拆分大括号格式字段并爆炸为独立行的方案
你之前的实现运行失败、效率极低,核心原因是str.split(expand=True)+stack的逻辑会按照最长拆分长度生成冗余宽表,带来大量无意义的内存开销,同时没有兼容空字符串、空大括号的边界场景。
直接使用pandas原生矢量化操作即可实现需求,全程走底层C级运算,无Python层循环,1万行数据处理耗时通常在10毫秒以内:
import pandas as pd # 原始数据 df = pd.DataFrame({'A': ['a', 'b', 'x', 'y'], 'B': ['{c,d}', '{e,f,g}', '', '{}']}) # 1. 批量移除B列首尾的大括号 df['B'] = df['B'].str.strip('{}') # 2. 按逗号拆分字符串为列表,空字符串拆分后自动得到[''],匹配保留空行的需求 df['B'] = df['B'].str.split(',') # 3. 直接对拆分后的列执行爆炸操作,重置索引 df = df.explode('B', ignore_index=True)
执行后得到的结果和预期结构完全一致:
A B 0 a c 1 a d 2 b e 3 b f 4 b g 5 x 6 y
注意事项
- 如果你的pandas版本低于1.3.0,
explode方法不支持ignore_index参数,把最后一行替换为df = df.explode('B').reset_index(drop=True)即可。 - 如果B列存在缺失值NaN,可以在移除大括号前加一句
df['B'] = df['B'].fillna('{}'),避免拆分时报错。
内容的提问来源于stack exchange,提问作者xE99
相关产品推荐
相关产品推荐

