【问题标题】:pandas dataframes merge with same column names, give priority to onepandas dataframes合并相同的列名,优先一个
【发布时间】:2015-12-18 01:39:09
【问题描述】:

合并和使用以下 MWE 时:

import pandas as pd
df1 = pd.DataFrame(data={'A': [1, 1], 'B': [2, 22]})
df2 = pd.DataFrame(data={'A': [1, 1], 'D': [4, 44]})
df3 = pd.DataFrame(data={'A': [1, 1], 'F': [6, 66]})
df = pd.concat([df1, df2, df3], axis=1, join='inner')

输出是:

    A   B   A   D   A   F
0   1   2   1   4   1   6
1   1  22   1  44   1  66

任何想法如何使用 cat 或 merge 或其他一些函数(无需在合并之前或之后手动“删除”公共列,并且合并必须仍然是内部)到以下输出(假设“优先级" 给df1['A'])?

    A   B   D   F
0   1   2   4   6
1   1  22  44  66

【问题讨论】:

    标签: python join pandas merge dataframe


    【解决方案1】:

    您可以转置数据框、删除重复项并再次转换。

    >>> df.T.drop_duplicates().T
       A   B   D   F
    0  1   2   4   6
    1  1  22  44  66
    

    【讨论】:

    • 谢谢。考虑到值是相同的,那就可以了。如果值不同,我对上面的示例做了如下操作(也适用于相同的值):drops = [c for c in df2.columns if c in df1.columns]; df2.drop(drops, axis=1, inplace=True); drops = [c for c in df3.columns if c in df1.columns]; df3.drop(drops, axis=1, inplace=True)
    猜你喜欢
    • 2021-02-24
    • 2018-05-16
    • 2018-06-25
    • 2019-05-30
    • 2014-09-28
    • 2014-01-18
    • 2021-07-07
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多