如何“按行合并”Pandas数据框

3
我想合并2个DataFrame,新的DataFrame的第一行等于df1的第1行,第二行等于df2的第1行,以此类推。
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

我对pandas的合并操作不熟悉,在查看了文档之后仍然不知道如何进行。

3个回答

8
你可以使用 keys 进行 concat,从而合并多个索引。
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

@user11638654u yw:-) 祝你编程愉快。 - BENY

1
你可以重命名数据框的索引,然后将一个数据框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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接