如何修正Pandas代码以正确构建指定结构的DataFrame?
修正Pandas DataFrame数据组织问题
问题背景
需要将给定的字符串数据拆分生成包含「Nota de Título」和「Nota Total」两列的DataFrame:分号前的数值放入第一列,分号后的数值放入第二列,但原代码无法正确组织数据。
原代码核心问题
- 变量名拼写错误:定义的变量是
sequence,但后续使用了sequencia.split(),会直接报错 - 无效数据未过滤:错误地处理了所有空格分割后的项,包括那些没有分号的孤立数值(比如
130.00、128,00),这些是干扰数据,不应进入最终DataFrame
修正方案与代码
修正步骤
- 统一字符串空格格式:将多连续空格替换为单个空格,避免分割出空字符串
- 过滤有效项:只保留包含分号的项,排除孤立数值
- 拆分有效项:按分号拆分后提取左右两边的内容,存入对应列表
- 生成目标DataFrame
import pandas as pd # 原始数据序列 sequence = "10 ;131,00 0; 131,00 130.00 10; 130.00 2 ;130.00 0 ;129.00 10 ;129.00 128,00 2; 128.00 10; 128,00 5; 127,00 127.00 127.00 5 ;127,00 0; 126,00 5 ;126,00 5 ;126,00 10; 126,00" # 标准化空格并分割 processed_items = ' '.join(sequence.split()).split(' ') notas_titulo = [] notas_total = [] # 仅处理包含分号的有效数据项 for item in processed_items: if ';' in item: titulo, total = [part.strip() for part in item.split(';')] notas_titulo.append(titulo) notas_total.append(total) # 生成目标DataFrame df_notas = pd.DataFrame({ 'Nota de Título': notas_titulo, 'Nota Total': notas_total }) # 输出结果 print(df_notas)
最终输出结果
Nota de Título Nota Total 0 10 131,00 1 0 131,00 2 10 130.00 3 2 130.00 4 0 129.00 5 10 129.00 6 2 128.00 7 10 128,00 8 5 127,00 9 5 127,00 10 0 126,00 11 5 126,00 12 5 126,00 13 10 126,00
内容的提问来源于stack exchange,提问作者Luiz Mário Andrade
相关产品推荐
相关产品推荐

