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

时间:2017-03-10 10:11:25

标签: python csv pandas

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

  1. 如何使用Pandas / Python做到这一点?
  2. 我是否使用合并或追加? csv1涵盖2001年至2004年,csv2涵盖2005年至2007年等等,它只是按时间划分。

2 个答案:

答案 0 :(得分:2)

事先知道您的列名称后,您可以通过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文件的标题:

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) 

答案 1 :(得分:1)

假设您有与csv1,csv2

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

请查看concat了解详细信息。