我有两个类似的数据帧结构如下:
ind = pd.MultiIndex.from_product([['Day 1','Day 2'],['D1','D2'],['Mean','StDev','StErr']], names = ['interval','device','stats'])
df = pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10,11,12]}, index = ind)
print(df)
col1
interval device stats
Day 1 D1 Mean 1
StDev 2
StErr 3
D2 Mean 4
StDev 5
StErr 6
Day 2 D1 Mean 7
StDev 8
StErr 9
D2 Mean 10
StDev 11
StErr 12
ind2 = pd.MultiIndex.from_product([['Day 1','Day 2'],['D1','D2'],['Ratio']], names = ['interval','device','stats'])
df2 = pd.DataFrame({'col1':[100,200,300,400]}, index = ind2)
print(df2)
col1
interval device stats
Day 1 D1 Ratio 100
D2 Ratio 200
Day 2 D1 Ratio 300
D2 Ratio 400
我正试着合并他们来得到这个:
col1
interval device stats
Day 1 D1 Mean 1
StDev 2
StErr 3
Ratio 100
D2 Mean 4
StDev 5
StErr 6
Ratio 200
Day 2 D1 Mean 7
StDev 8
StErr 9
Ratio 300
D2 Mean 10
StDev 11
StErr 12
Ratio 400
我用join
、concat
和merge
尝试了很多不同的方法,但我能得到的最接近的方法是使用df3 = pd.concat([df, df2], axis=1)
。不幸的是,这让我想到:
col1 col1
interval device stats
Day 1 D1 Mean 1 NaN
Ratio NaN 100
StDev 2 NaN
StErr 3 NaN
D2 Mean 4 NaN
Ratio NaN 200
StDev 5 NaN
StErr 6 NaN
Day 2 D1 Mean 7 NaN
Ratio NaN 300
StDev 8 NaN
StErr 9 NaN
D2 Mean 10 NaN
Ratio NaN 400
StDev 11 NaN
StErr 12 NaN
使用^{} 时不要使用
axis=1
,因为这意味着按列追加,而不是按行追加。您希望axis=0
按行显示,这恰好是默认值,因此不需要指定它:结果输出:
相关问题 更多 >
编程相关推荐