嵌套列表生成DataFrame时最后元素值挤入首单元格其余为NAN求助
嵌套列表转DataFrame时最后一行值挤在首个单元格的问题排查与解决
问题描述
使用df = pd.DataFrame(lst)将嵌套列表转换为DataFrame时,发现最后一个子列表的所有内容都被压缩在该行第一个单元格中,其余单元格均显示NaN,此前同类操作未出现该问题。生成的DataFrame样式如下:
前几行:多列均有对应数据
最后一行:仅第一个单元格包含列表内容,剩余列全为NaN
原因分析
本质是最后一个子列表的结构与其他子列表不匹配,常见两种触发场景:
- 最后一个元素是嵌套更深的列表:比如其他子列表都是一维结构(如
[1,2,3]),但最后一个是二维列表(如[[4,5,6]]),Pandas会将这个二维列表视为单个元素,因此仅填充首个单元格。 - 最后一个子列表长度异常:若前面子列表长度统一为N,而最后一个子列表长度为1,且该元素本身是列表,也会导致Pandas将其识别为单个单元格内容。
解决办法
针对不同场景调整嵌套列表即可:
- 解包过深嵌套:如果最后一个子列表是二维结构,直接去除外层括号,转为和其他子列表一致的一维列表。
错误示例代码:
修正后代码:lst = [ [1, 2, 3], [4, 5, 6], [[7, 8, 9]] ] df = pd.DataFrame(lst)lst = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] df = pd.DataFrame(lst) - 统一子列表长度:若最后一个子列表长度确实与其他行不同,可通过补全缺失值(如用
None填充)或使用pd.DataFrame.from_records(lst)来自动对齐列结构。
内容的提问来源于stack exchange,提问作者Totoro
相关产品推荐
相关产品推荐

