【问题标题】:Pandas: how to join two dataframes combinatorially [duplicate]熊猫:如何组合连接两个数据框[重复]
【发布时间】:2018-09-13 05:58:04
【问题描述】:

我有两个数据框,我想以组合方式组合(即组合方式将一个 df 的每一行连接到另一个 df 的每一行)。我可以通过合并'key's来做到这一点,但我的解决方案显然很麻烦。我正在寻找一种更直接,甚至是pythonesque的方式来处理这个操作。有什么建议吗?

MWE:

fred = pd.DataFrame({'A':[1., 4.],'B':[2., 5.], 'C':[3., 6.]})
print(fred)
    A    B    C
0  1.0  2.0  3.0
1  4.0  5.0  6.0

jim = pd.DataFrame({'one':['a', 'c'],'two':['b', 'd']})
print(jim)
   one two
0   a   b
1   c   d


fred['key'] = [1,2]
jim1 = jim.copy()
jim1['key'] = 1
jim2 = jim.copy()
jim2['key'] = 2
jim3 = jim1.append(jim2)

jack = pd.merge(fred, jim3, on='key').drop(['key'], axis=1)
print(jack)
    A    B    C   one two
0  1.0  2.0  3.0   a   b
1  1.0  2.0  3.0   c   d
2  4.0  5.0  6.0   a   b
3  4.0  5.0  6.0   c   d

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以将fred 的每一行与jim 的每一行合并,方法是合并一个key 列,该列等于每一行的相同值(例如,1):

    In [16]: pd.merge(fred.assign(key=1), jim.assign(key=1), on='key').drop('key', axis=1)
    Out[16]: 
         A    B    C one two
    0  1.0  2.0  3.0   a   b
    1  1.0  2.0  3.0   c   d
    2  4.0  5.0  6.0   a   b
    3  4.0  5.0  6.0   c   d
    

    【讨论】:

      【解决方案2】:

      您是否在寻找两个数据帧的笛卡尔积,例如交叉连接?

      回复here

      【讨论】:

        猜你喜欢
        • 2016-03-13
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 2019-12-18
        • 2018-04-08
        • 2017-11-13
        相关资源
        最近更新 更多