如何将每一行熊猫数据帧附加到另一个数据帧的每一行
Posted
技术标签:
【中文标题】如何将每一行熊猫数据帧附加到另一个数据帧的每一行【英文标题】:how to append every row of pandas dataframe to every row of another dataframe 【发布时间】:2013-11-18 14:36:17 【问题描述】:例如,df1 是 3*2 数据帧,df2 是 10*3 数据帧,我想要生成一个 30*5 的新数据帧,其中 df1 中的每一行都附加了 df2 的 3 列对于 df2 中的所有 10 行。
我知道我可以使用迭代将 df2 的列附加到 df1 的每一行,但我想知道在 pandas 中是否有更有效的方法来执行此操作,例如它的 concat 函数。
有人可以帮忙吗?
问候, 南
【问题讨论】:
【参考方案1】:如果我理解你,你需要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
【讨论】:
@DanAllan 我在这里打开了一个问题github.com/pydata/pandas/issues/5401 我认为添加参数值 how='cross' 来合并和加入很容易。不知道开发者是否认为合适,如果合适,我想我可以创建 PR :)以上是关于如何将每一行熊猫数据帧附加到另一个数据帧的每一行的主要内容,如果未能解决你的问题,请参考以下文章