2012-10-09 74 views
0

如何轉置由concat()返回的DataFrame?熊貓轉置concat()

df = DataFrame([ 
      dict(a=1, b=10, c=41), 
      dict(a=1, b=20, c=42), 
      ]) 

concat([df, df]).T 

我得到:

AttributeError: 'DataFrame' object has no attribute 'dtypes' ! 

如果我嘗試:

concat([df, df]).T.to_dict() 

我得到:

RuntimeError: maximum recursion depth exceeded in cmp 

我認爲這是關係到由CONCAT推出的副本( )在索引中,但沒有找到解決方法。

+0

你能解釋一下你想達到什麼樣的? – root

+0

我曾經用df.T.to_dict()來單元測試DataFrame的值。() – PhE

+1

fyi最新的熊貓發行版能夠支持索引重複,我相信在0.8.0之前情況並非如此。 –

回答

1

可以使用keys指定分級指數:

In [288]: concatenated = concat([df,df], keys=['first', 'second']) 

In [289]: print concatenated.T 
    first  second  
     0 1  0 1 
a  1 1  1 1 
b  10 20  10 20 
c  41 42  41 42 

In [290]: print concatenated.T.to_dict().values() 
[{'a': 1, 'c': 41, 'b': 10}, {'a': 1, 'c': 41, 'b': 10}, {'a': 1, 'c': 42, 'b': 20}, {'a': 1, 'c': 42, 'b': 20}]