【问题标题】:pandas df merge avoid duplicate column namespandas df merge 避免重复的列名
【发布时间】:2018-09-18 21:06:13
【问题描述】:

问题是当merge 两个dfs,并且它们都有一个名为A 的列,那么结果将是一个具有A_xA_y 的df,我想知道如何保留@ 987654326@ 从一个df 中删除,然后丢弃另一个,这样我以后就不必在合并后将A_x 重命名为A

【问题讨论】:

  • 如果Akey 则不存在A_xA_y。但如果只需要更改列后缀,请使用print (df1.merge(df2, on='Key', suffixes=('','_')))

标签: python-3.x pandas dataframe merge


【解决方案1】:

这取决于是否需要将具有重复列名的列附加到最终合并的DataFrame

...然后将suffixes参数添加到merge

print (df1.merge(df2, on='Key', suffixes=('', '_')))

--

...如果不使用@Scott Boston 解决方案。

【讨论】:

    【解决方案2】:

    只需在合并前过滤您的数据框列。

    df1 = pd.DataFrame({'Key':np.arange(12),'A':np.random.randint(0,100,12),'C':list('ABCD')*3})
    
    df2 = pd.DataFrame({'Key':np.arange(12),'A':np.random.randint(100,1000,12),'C':list('ABCD')*3})
    
    df1.merge(df2[['Key','A']], on='Key')
    

    输出:(注意:C不重复)

        A_x  C  Key  A_y
    0    60  A    0  440
    1    65  B    1  731
    2    76  C    2  596
    3    67  D    3  580
    4    44  A    4  477
    5    51  B    5  524
    6     7  C    6  572
    7    88  D    7  984
    8    70  A    8  862
    9    13  B    9  158
    10   28  C   10  593
    11   63  D   11  177
    

    【讨论】:

    • 同样简单地从 Df2 中过滤 A,Df2['Key'] 在合并中。
    • 或者你可以按照 Jezrael 的建议去做。合并所有,对要保留的列使用空后缀并删除其余列。
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2022-01-08
    • 2020-06-10
    • 2020-12-11
    • 1970-01-01
    • 2021-11-23
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多