如何将二维列表转换为含列表元素的2列1行Pandas DataFrame?
解决方法
要得到1行2列、每个单元格对应原列表子元素的DataFrame,核心是让原二维列表的每个子列表作为单个元素传入DataFrame构造器,避免构造器拆分它们。
方法一:直接包装成单行结构
把原列表A再嵌套一层,让外层列表只有一个元素(即整个A),这样构造器会把A的两个子列表作为一行的两列:
import pandas as pd A = [['1250', '22200', '43110'], [True, True, True]] df = pd.DataFrame([A])
输出的DataFrame结构:
0 1 0 [1250, 22200, 43110] [True, True, True]
方法二:自定义列名构造
如果需要给列设置明确名称,可用字典传入,每个键是列名,值是包含对应子列表的单元素列表:
import pandas as pd A = [['1250', '22200', '43110'], [True, True, True]] df = pd.DataFrame({ '数值列': [A[0]], '布尔列': [A[1]] })
输出的DataFrame结构:
数值列 布尔列 0 [1250, 22200, 43110] [True, True, True]
原方法的问题
pd.DataFrame(A)会把A的每个子列表拆分为多行数据——因为两个子列表各有3个元素,构造器会按列对齐,将每个元素作为一行的列值,最终生成3行2列的结果。而我们需要把整个子列表作为单元格值,就必须让构造器将其视为单个元素,因此需要额外嵌套一层列表。
内容的提问来源于stack exchange,提问作者Julio
相关产品推荐
相关产品推荐

