在pandas中迭代构建多索引数据帧

时间:2015-02-19 05:33:22

标签: python pandas

我有n个小数据帧,我将它合并为一个多索引数据帧。

d1 = DataFrame(np.array([
    ['a', 5, 9],
    ['b', 4, 61],
    ['c', 24, 9]]),
    columns=['name', 'attr11', 'attr22'])

d2 = DataFrame(np.array([
    ['a', 5, 19],
    ['b', 14, 16],
    ['c', 4, 9]]),
    columns=['name', 'attr21', 'attr22'])

d3 = DataFrame(np.array([
    ['a', 5, 19],
    ['b', 14, 16],
    ['d', 10, 14],
    ['c', 4, 9]]),
    columns=['name', 'attr21', 'attr22'])

如何将这些组合成一个数据框?

结果:

      name attr11 attr21  attr22
d1    a    5    NULL    9
      b    4    NULL    61
      c    24   NULL    9
d2    a    NULL   5    19
      b    NULL   14   16
      c    NULL   4    9
d3    a    NULL   5    19 
      b    NULL   14   16
      c    NULL   4    9
      d    NULL   10   14

1 个答案:

答案 0 :(得分:1)

您可以在连接后构建multiindex。您只需要使用dataframe id:

为每个帧添加一列
frames =[d1,d2,d3]

使用帧ID:

为每个帧添加一列
for x in enumerate(frames):
    x[1]['frame_id'] = 'd'+str(x[0]+1)

然后连接帧列表并在所需列上设置索引:

pd.concat(frames).set_index(['frame_id','name'])