我将大量数据拆分为4个csv文件 . 它们应该具有相同的列,并且每个文件都是前一个的延续 . 我在Pandas中导入了4个CSV文件,在合并它们之前,我想比较所有4个列以确定任何差异 .
如何使用Pandas / Python做到这一点?
我是否使用合并或追加? csv1涵盖2001年至2004年,csv2涵盖2005年至2007年等等,它只是按时间划分 .
事先知道列名后,可以通过 usecols 参数将它们显式传递给pd.read_csv . 如果您的csv文件与预定义列名称之间的列名不匹配,将自动引发 ValueError .
usecols
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 :
nrows=0
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)
假设您有与csv1,csv2相关的df1,df2
1. all(df1.columns == df2.columns) 2. pd.concat([df1, df2])
有关详细信息,请查看concat .
2 回答
事先知道列名后,可以通过
usecols
参数将它们显式传递给pd.read_csv . 如果您的csv文件与预定义列名称之间的列名不匹配,将自动引发ValueError
.要合并您的csv文件,您可以使用pd.concat:
如果要检查csv文件中的所有列是否相同,只需在使用
nrows=0
时加载csv文件的 Headers :假设您有与csv1,csv2相关的df1,df2
有关详细信息,请查看concat .