如何高效拆分Pandas中带键值对的字符串列为独立DataFrame列?
高效拆分DataFrame字符串列并转换为多列的实现方法
针对你遇到的indicators列格式转换需求,完全可以用Pandas的内置字符串处理+重塑方法实现,全程避免多重循环,代码简洁高效:
实现步骤与代码
import pandas as pd # 模拟你的原始数据 data = pd.DataFrame({ 'indicators': [ 'A: 84.0% \n B: 16.0%', 'C: 100.0%', 'C: 100.0%', 'D: 100.0%', 'A: 100.0%', 'D: 78.0% \n A: 22.0%', 'A: 34.0% \n B: 33.0% \n C: 33.0%' ] }) # 1. 将每行的多组指标拆分为独立行 split_df = data['indicators'].str.split('\n', expand=True).stack().reset_index(level=1, drop=True).to_frame('temp') # 2. 提取指标名称和数值,转换数值类型 split_df[['col', 'value']] = split_df['temp'].str.extract(r'([A-D]): (\d+\.\d+)%') split_df['value'] = split_df['value'].astype(float).astype(int) # 3. 重塑为宽表,填充缺失值为0,与原索引对齐 result = split_df.pivot(columns='col', values='value').reindex(data.index).fillna(0).astype(int) print(result)
代码说明
- 步骤1:用
str.split('\n', expand=True)把每行的多个指标拆成多列,再通过stack()将列转为行,保留原DataFrame的索引,方便后续对齐。 - 步骤2:用正则表达式
str.extract()精准提取指标字母(A-D)和百分比数值,然后把浮点型的数值转成整数,去掉.0的冗余。 - 步骤3:通过
pivot()将长表转回宽表,用reindex(data.index)确保和原DataFrame的行数、索引完全匹配,最后用fillna(0)把缺失的指标值补0。
运行后就能得到你想要的格式:
A B C D 0 84 16 0 0 1 0 0 100 0 2 0 0 100 0 3 0 0 0 100 4 100 0 0 0 5 22 0 0 78 6 34 33 33 0
内容的提问来源于stack exchange,提问作者ijaz ahamed
相关产品推荐
相关产品推荐

