首页 文章

熊猫:如何比较导入的csv文件列以确保它们是相同的?

提问于
浏览
1

我将大量数据拆分为4个csv文件 . 它们应该具有相同的列,并且每个文件都是前一个的延续 . 我在Pandas中导入了4个CSV文件,在合并它们之前,我想比较所有4个列以确定任何差异 .

  • 如何使用Pandas / Python做到这一点?

  • 我是否使用合并或追加? csv1涵盖2001年至2004年,csv2涵盖2005年至2007年等等,它只是按时间划分 .

2 回答

  • 1

    事先知道列名后,可以通过 usecols 参数将它们显式传递给pd.read_csv . 如果您的csv文件与预定义列名称之间的列名不匹配,将自动引发 ValueError .

    要合并您的csv文件,您可以使用pd.concat

    # define your column names
    column_names = ["Col A", "Col B", "Col C", "Col D"]
    
    # setup file paths
    base_path = os.path.join("E:/","Datasets","Dataset01") # adopted your example here
    file_names = ["file1.csv", "file2.csv", "file3.csv", "file4.csv"]
    abs_paths = [os.path.join(base_path, file_name)
                 for file_name in file_names]
    
    dfs = pd.concat([pd.read_csv(abs_path, usecols=columns_names) 
                     for abs_path in abs_paths])
    

    如果要检查csv文件中的所有列是否相同,只需在使用 nrows=0 时加载csv文件的 Headers :

    cols = [pd.read_csv(abs_path, nrows=0).columns
            for abs_path in abs_paths]
    
    cols_identical = [all(cols[0] == colx) for colx in cols[1:]]
    all_cols_same = all(cols_identical)
    
  • 2

    假设您有与csv1,csv2相关的df1,df2

    1. all(df1.columns == df2.columns)
    2. pd.concat([df1, df2])
    

    有关详细信息,请查看concat .

相关问题