如何通过data参数传入列表创建多列pandas DataFrame?
解决方案
你遇到的报错是因为pandas解析嵌套列表格式的data参数时,默认将每个子列表识别为一行数据,你的原始data是按列存储的结构,直接传入会出现行列维度不匹配的问题,两种常用的原生实现方式如下:
- 方法1:用
zip(*data)转置列表结构zip(*data)可以直接将按列存储的嵌套列表转换为pandas默认的行存储结构,无需后续转置操作,示例代码:
import pandas as pd # 按列存储的原始数据:第一个子列表是col1的值,第二个是col2的值 data = [['a', 'b', 'c'], ['d', 'e', 'f']] df = pd.DataFrame( data=zip(*data), index=list('ABC'), columns=['col1', 'col2'] )
- 方法2:用numpy数组转置
如果你的数据已经用numpy存储,直接调用数组的.T属性转置后传入即可:
import pandas as pd import numpy as np data = [['a', 'b', 'c'], ['d', 'e', 'f']] df = pd.DataFrame( data=np.array(data).T, index=list('ABC'), columns=['col1', 'col2'] )
以上两种方式构造出的DataFrame完全符合需求,shape为(3,2),列数据与你传入的子列表一一对应。
内容的提问来源于stack exchange,提问作者Rabinzel
相关产品推荐
相关产品推荐

