【问题标题】:How do I merge two dataframes, one column are the names of all the columns in the other dataframe?如何合并两个数据框,一列是另一个数据框中所有列的名称?
【发布时间】:2021-03-01 07:15:16
【问题描述】:

所以问题很简单,我有两个数据帧,一个看起来像这样(第一个 df)

  Date    name  info    x
1/2/2007    a   3       s
1/2/2007    b   34      m
1/3/2007    a   23      s
1/4/2007    a   21      m
1/5/2007    b   31      s
1/6/2007    a   35.3    m
1/6/2007    b   39.6    s
1/6/2007    c   43.9    m
1/7/2007    a   48.2    s
1/8/2007    b   52.5    m
1/9/2007    a   56.8    s
1/9/2007    c   61.1    m
1/10/2007   a   65.4    s
1/11/2007   a   69.7    m
1/12/2007   b   74      s
1/13/2007   b   78.3    m
1/14/2007   a   82.6    s
1/14/2007   b   86.9    m
1/14/2007   c   91.2    s
1/14/2007   d   95.5    m

然后我有另一个看起来像这样的数据框(第二个 df)

Date        a      b     c    d
1/2/2007    20     5        
1/3/2007    21     4        
1/4/2007    23     6        
1/5/2007    19     2        
1/6/2007    20.5   7     8  
1/7/2007    20.4   5.4   7  
1/8/2007    20.3   5.6   6  
1/9/2007    20.2   5.8   10 
1/10/2007   20.1   6     9  
1/11/2007   20     6.2   11 
1/12/2007   19.9   6.4   12 
1/13/2007   19.8   6.6   13 
1/14/2007   19.7   6.8   15   20

我的想法是我希望最终结果是

Date       name  info    x     y
1/2/2007    a   3        s    20
1/2/2007    b   34       m     5
1/3/2007    a   23       s    21
1/4/2007    a   21       m    23
1/5/2007    b   31       s     2
1/6/2007    a   35.3     m    20.5
1/6/2007    b   39.6     s     7
1/6/2007    c   43.9     m     8
1/7/2007    a   48.2     s    20.4
1/8/2007    b   52.5     m     5.6
1/9/2007    a   56.8     s    20.2
1/9/2007    c   61.1     m     10
1/10/2007   a   65.4     s    20.1
1/11/2007   a   69.7     m     20
1/12/2007   b   74       s     6.4
1/13/2007   b   78.3     m     6.6
1/14/2007   a   82.6     s    19.7
1/14/2007   b   86.9     m     6.8
1/14/2007   c   91.2     s     15
1/14/2007   d   95.5     m     20

是否有任何简单的方法可以做到这一点,因为我拥有的数据框看起来像第二个 df 更大,第一个 df 更长,我不想进行超大合并,因为我唯一的想法had 与包含第二个 df 中的每个名称的合并,这将是永恒的。如果有人可以帮助我,那就太棒了。这个想法是在 python 中使用 pandas 来完成,但如果现在有人怎么做,我也可以在 excel 中完成。谢谢

【问题讨论】:

    标签: python excel pandas merge


    【解决方案1】:

    如果你只想插入列 a

    pd.merge(df, df2[['a']], how='inner', right_index=True, left_index=True)
    

    或者您可以合并所有列并删除列

    pd.merge(df, df2, how='inner', right_index=True, left_index=True).drop(['b','c','d'],1]
    

    【讨论】:

    • 所以我只是尝试了您的代码,但是嗯,您提出的合并 umm 适用于只有四列的 dat 框架,而我的案例可能有超过一百列,所以一个接一个地输入他们的名字不会高效。
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2023-04-10
    • 2017-08-02
    • 2021-11-20
    • 2014-01-03
    • 1970-01-01
    • 2021-05-17
    • 2015-04-18
    相关资源
    最近更新 更多