我想合并2个DataFrame,以便在新的DataFrame中,第一行= df1中的第1行,第二行是df2中的第一行,依此类推。
A=pd.DataFrame({'A':[1,3,5], 'B': [7,9,11]}, index = ['bs','ss','db'])
B=pd.DataFrame({'A':[2,4,6], 'B': [8,10,12]}, index = ['bs','ss','db'])
请注意,行标签和列标签完全相同,并且两个数据框都具有相同的尺寸。
所以所需的输出应该看起来像
A B
bs_a 1 7
bs_b 2 8
ss_a 3 9
ss_b 4 10
db_a 5 11
db_b 6 12
我不熟悉熊猫合并,在查阅文档后,我仍然不知道该怎么做
答案 0 :(得分:8)
您可以对concat
进行keys
,合并多个索引
s=pd.concat([A,B],keys=['a','b']).sort_index(level=1)
s.index=s.index.map('{0[1]}_{0[0]}'.format)
s
Out[225]:
A B
bs_a 1 7
bs_b 2 8
db_a 5 11
db_b 6 12
ss_a 3 9
ss_b 4 10
答案 1 :(得分:1)
您可以rename
数据框的索引,然后append
一个到另一个
df = A.rename('{}_a'.format).append(B.rename('{}_b'.format)).sort_index()
这给出了
A B
bs_a 1 7
bs_b 2 8
db_a 5 11
db_b 6 12
ss_a 3 9
ss_b 4 10
答案 2 :(得分:0)
尝试使用pd.concat
A.reset_index(inplace=True)
B.reset_index(inplace=True)
A['index']=A['index']+'_a'
B['index']=B['index']+'_b'
A.set_index("index",inplace=True)
B.set_index("index",inplace=True)
final_df = pd.concat([A,B]).sort_values(['A'],ascending=[True])
final_df.index.name=''
A B
bs_a 1 7
bs_b 2 8
ss_a 3 9
ss_b 4 10
db_a 5 11
db_b 6 12