列表转DataFrame异常:仅识别两列,如何解决?
解决列表转DataFrame时列数异常的问题
看起来你的dataInList格式存在语法问题——每个子列表的第一个元素其实是把本该独立的多个字段(时间戳、类型、标识等)错误地合并成了一个带引号、逗号的长字符串,导致Pandas解析时把每个子列表识别成只有2个元素,最终生成的DataFrame只有2列。
下面是具体的修复步骤:
步骤1:清理列表数据
先写一个清理函数,把每个子列表里的混乱字段拆分并格式化:
import pandas as pd def clean_sublist(sublist): # 处理第一个长字符串:去掉首尾引号,按', '拆分,再清理每个字段的多余字符(制表符、换行、引号) first_segment = sublist[0].strip("'\"").split("', '") cleaned_first = [field.strip("\t\n'\" ") for field in first_segment] # 处理最后一个数值字段:清理换行和多余空格 cleaned_last = [sublist[-1].strip("\n ")] # 合并成完整的5个字段 return cleaned_first + cleaned_last
步骤2:处理整个列表并生成DataFrame
用上面的函数遍历整个列表,再转换为DataFrame(可以指定列名让结果更清晰):
# 处理原始列表 cleaned_data = [clean_sublist(item) for item in dataInList] # 生成DataFrame,指定列名 df = pd.DataFrame(cleaned_data, columns=["Timestamp", "Type", "Code", "Label", "Value"])
效果验证
处理后,每个子列表会被解析成5个独立的字段,比如第一个子列表会变成:
["2018-05-15 15:35:57", "A", "xtre", "retle", "105.0 (C)"]
此时生成的DataFrame就会有5列,完全符合你的预期。
内容的提问来源于stack exchange,提问作者raptorisa
相关产品推荐
相关产品推荐

