使用具有不同大小值的索引创建pandas数据框

时间:2016-02-17 11:36:50

标签: python pandas

是否可以执行以下操作(dict是第一行索引的数据):

dict={'col1':1,'col2':[1,2],'col3':'str'}

nm=pd.DataFrame(dict,index=['new line'])

我希望收到一个类似的数据框:

nm

          col1   col2 col3

new line     1  [1,2]  str

使用类型列表的col2中的值,但我收到以下错误:

  

ValueError:无法将shape(2)中的输入数组广播为形状   (1)

谢谢!

1 个答案:

答案 0 :(得分:1)

你错过了一个[]

dict={'col1':1,'col2':[[1,2]],'col3':'str'} 
nm=pd.DataFrame(dict,index=['new line'])

print nm
          col1    col2 col3
new line     1  [1, 2]  str

或者:

dict={'col1':[1],'col2':[[1,2]],'col3':['str']} 
nm=pd.DataFrame(dict,index=['new line'])

print nm
          col1    col2 col3
new line     1  [1, 2]  str

如果您有更多值,则需要将列表用作Series的每列,因此如果您需要列中的list,则必须使用list lists

dict={'col1':[1, 2],'col2':[[1,2], [3,5]],'col3':['str', 'str1']} 
nm=pd.DataFrame(dict,index=['new line', 'new line1'])

print nm
           col1    col2  col3
new line      1  [1, 2]   str
new line1     2  [3, 5]  str1

将非标量值存储为数据元素是不明智的,并且通常您会失去对向量化方法的访问权限,因为nppandas没有向量化方法附加到list中矢量化的方式。 link