【问题标题】: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 函数。

有人可以帮忙吗?

问候, 南

【问题讨论】:

    标签: join merge 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 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2018-08-18
    • 2021-03-02
    相关资源
    最近更新 更多