我正在尝试合并来自不同参与者的时间进程数据。我正在迭代地为每个参与者提取一个数据帧,并在循环结束时将它们连接起来。在我连接之前,我想将我的参与者的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重复。然而我的显然有更多的赞成和更好的答案。 “前置”显然似乎没有吸引尽可能多的点击量。
答案 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