我有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
答案 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'])