代码之家  ›  专栏  ›  技术社区  ›  singularity2047

如何使用Python找出两个数据帧在列名方面的差异

  •  1
  • singularity2047  · 技术社区  · 7 年前

    我想找出两个数据帧在列名方面的差异。

    这是示例表1

    d1 = {'row_num': [1, 2, 3, 4, 5], 'name': ['john', 'tom', 'bob', 'rock', 'jimy'], 'DoB': ['01/02/2010', '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', 'CA']}
    df1 = pd.DataFrame(data = d)
    df1['month'] = pd.DatetimeIndex(df['DoB']).month
    df1['year'] = pd.DatetimeIndex(df['DoB']).year
    

    这是示例表2

    d2 = {'row_num': [1, 2, 3, 4, 5], 'name': ['john', 'tom', 'bob', 'rock', 'jimy'], 'DoB': ['01/02/2010', '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', 'CA']}
    df2 = pd.DataFrame(data = d)
    

    表2或df2没有像df1那样的月份和年份列。我想找出df2中缺少df1的哪些列。

    我知道sql中有“EXCEPT”,但如何使用pandas/python,有什么建议吗?

    2 回复  |  直到 7 年前
        1
  •  6
  •   cs95 abhishek58g    7 年前

    有一个函数就是为了这个目的: pd.Index.difference

    df1.columns.difference(df2.columns)
    Index(['month', 'year'], dtype='object')
    

    以及相应的列;

    df1[df1.columns.difference(df2.columns)]
    
       month  year
    0      1  2010
    1      1  2012
    2     11  2014
    3     11  2014
    4      9  2016
    
        2
  •  3
  •   Ben.T    7 年前

    您可以执行以下操作: [col for col in df1.columns if col not in df2.columns] 查找的列 df1 歪投球 df2 输出将为您提供列名称列表