将多索引添加到pandas数据帧并保留当前索引

时间:2013-11-20 00:50:17

标签: python pandas dataframe multi-index

我正在尝试合并来自不同参与者的时间进程数据。我正在迭代地为每个参与者提取一个数据帧,并在循环结束时将它们连接起来。在我连接之前,我想将我的参与者的ID添加到另一个索引。

这看起来真的很简单,但我无法在这个问题上找到任何东西:(

我想转此

    col
0     1
1   1.1
2   NaN

分为:

          col
ID    0     1
      1   1.1
      2   NaN

我知道我可以创建一个新的索引:

multindex = [np.array(ID*len(data)),np.array(np.arange(len(data)))]

但是没有尽头就没有优雅,而且 - 看到我在半小时内高频测量 - 甚至会变慢:/

我想提一下,我最近发现我的问题与this other question重复。然而我的显然有更多的赞成和更好的答案。 “前置”显然似乎没有吸引尽可能多的点击量。

1 个答案:

答案 0 :(得分:12)

也许您可以使用keys的{​​{1}}参数:

concat

输出:

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.random.rand(3, 2))
df2 = pd.DataFrame(np.random.rand(4, 2))
df3 = pd.DataFrame(np.random.rand(5, 2))

print pd.concat([df1, df2, df3], keys=["A", "B", "C"])

如果您想稍后追加其他数据框:

            0         1
A 0  0.863774  0.794880
  1  0.578503  0.418619
  2  0.215317  0.146167
B 0  0.655829  0.116917
  1  0.862316  0.812847
  2  0.500126  0.689218
  3  0.653439  0.270427
C 0  0.825213  0.882963
  1  0.579436  0.332047
  2  0.456948  0.718893
  3  0.795074  0.826773
  4  0.049676  0.697471