例如,df1 是一个 3*2 的数据帧,而 df2 是一个 10*3 的数据帧,我想要的是生成一个 30*5 的新数据帧,其中 df1 中的每一行都附加了所有 10 个 df2 的 3 列df2 中的行。
我知道我可以使用迭代将 df2 的列附加到 df1 的每一行,但我想知道在 Pandas 中是否有一些更有效的方法来做到这一点,比如它的 concat 函数。
有人可以帮忙吗?
问候,
南
最佳答案
如果我理解你,你需要 cartesian product 。您可以在 Pandas 中使用合并来模拟这一点:
>>> df1 = pd.DataFrame({'A':list('abc'), 'B':range(3)})
>>> df2 = pd.DataFrame({'C':list('defg'), 'D':range(3,7)})
>>> df1['key'] = 1
>>> df2['key'] = 1
>>> df = pd.merge(df1, df2, on='key')
>>> del df['key']
>>> df
A B C D
0 a 0 d 3
1 a 0 e 4
2 a 0 f 5
3 a 0 g 6
4 b 1 d 3
5 b 1 e 4
6 b 1 f 5
7 b 1 g 6
8 c 2 d 3
9 c 2 e 4
10 c 2 f 5
11 c 2 g 6
关于join - 如何将pandas数据帧的每一行附加到另一个数据帧的每一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19827641/