9

我需要创建一个DataFrame包含DataFrames. 列DataFrames中的内容有不同的大小,我遇到了一个StopIteration例外。DataFrames当它们的大小相同时,这不会发生。我知道 aPanel更适合这个,但DataFrame在这种情况下我需要 a 。

a=pd.DataFrame({'cat1':['one','two','three'],'cat2':['four','five','six']})
b=pd.DataFrame({'cat1':['ten','eleven'],'cat2':['twelve','thirteen']})
pd.DataFrame({'col1':{'row1':a,'row2':b}})

如果我分别从“cat1”、“cat2”中删除“三个”和“六个”项目,那么这工作正常。知道如何实现这一目标吗?

4

1 回答 1

5

这不是一个好主意,您会失去所有效率,因为事物被视为objectdtype 并且操作将非常慢(因为操作不能通过 c 级基本类型完成,例如 float/int)。更好的是使用多级索引,它可以轻松包含我认为您想要的内容

In [20]: a
Out[20]: 
    cat1  cat2
0    one  four
1    two  five
2  three   six

In [21]: b
Out[21]: 
     cat1      cat2
0     ten    twelve
1  eleven  thirteen

In [22]: pd.concat([ a, b ], keys={ 'row1' : a, 'row2' : b })
Out[22]: 
          cat1      cat2
row1 0     one      four
     1     two      five
     2   three       six
row2 0     ten    twelve
     1  eleven  thirteen
于 2013-07-30T19:17:33.793 回答