我需要创建一个包含DataFrame列的DataFrames。列中的DataFrames具有不同的大小,并且我收到了StopIteration异常。当DataFrames的大小相同时,不会发生这种情况。我知道Panel更适合此操作,但是在这种情况下,我需要DataFrame

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”中删除“三个”和“六个”项目,则可以正常工作。知道我该如何实现吗?

最佳答案

这不是一个好主意,您会失去所有效率,因为事情被视为object dtype且操作将非常慢(因为操作无法通过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

关于 Pandas :DataFrame中的DataFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17954520/

10-15 18:20