从一个DataFrame字典中创建一个DataFrame对象

5

我有一个DataFrame字典,其中假定键是有意义的:

In [32]: x = pd.DataFrame(dict(foo=[1,2,3], bar=[4,5,6])).set_index('foo')
In [33]: y = pd.DataFrame(dict(foo=[7,8,9], bar=[10,11,12])).set_index('foo')
In [34]: z = dict(x=x, y=y)

它看起来像这样:

In [43]: x
Out[43]: 
     bar
foo     
1      4
2      5
3      6

In [44]: y
Out[44]: 
     bar
foo     
7     10
8     11
9     12

有没有一种简单的方法能得到以下DataFrame:
    foo  bar
x   1    4
    2    5
    3    6
y   7    10
    8    11
    9    12
1个回答

7
你可以使用 concat 实现,字典的键将自动用于新索引级别:
In [6]: z = dict(x=x, y=y)

In [7]: pd.concat(z)
Out[7]:
       bar
  foo
x 1      4
  2      5
  3      6
y 7     10
  8     11
  9     12

您可以使用 concatnames 参数为新的索引级别命名(例如 names=['key'])。

2
每次我发现有关Pandas的新知识,我就越来越喜欢它。names=部分也很棒,额外加分。 - LondonRob
这个程序的names选项会给我返回"ValueError: Length of names must match number of levels in MultiIndex."的错误。 - user1318135
pd.concat(z, names=['key']) 对我来说运行良好。你使用的 pandas 版本是什么?如果你仍然有问题,请开一个新的问题。 - joris
pd.concat(z, names=['key'])是一个不错的尝试!这篇文章对我来说真的很有帮助。 - ankush jamthikar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接