合并两个数据框以模仿“ select * from tablea,tableb”

时间:2019-05-16 11:56:31

标签: python pandas

例如,我想将两个数据框合并在一起,以模仿“ select * from A,B”, 表A将如下所示:

import pandas as pd
table_a = pd.DataFrame({'id': ['A', 'B']})

表B看起来像这样:

import pandas as pd
table_b = pd.DataFrame({'x': [1,2], 'y':[3,4]})

我想拥有的是

import pandas as pd
table_c = pd.DataFrame({'id':['A', 'A', 'B', 'B'],
                        'x': [1,2,1,2], 'y':[3,4,3,4]})

即复制A和B table_b.shape [0]次并追加。

我相信有多种方法可以做到这一点。例如,

a = table_b.loc[np.tile(table_b.index.values, table_a.shape[0])]
b = table_a.loc[np.repeat(table_a.index.values, table_b.shape[0])]
a['id'] = b['id'].values

还有其他更好的方法吗?谢谢

1 个答案:

答案 0 :(得分:1)

pd.DataFrame([
    d1 + d2
    for d1 in zip(*map(table_a.get, table_a))
    for d2 in zip(*map(table_b.get, table_b))
], columns=table_a.columns.append(table_b.columns))