将数百个CSV文件串联串联串联为单个数据帧



我有数百个CSV文件 - 每个文件对应于独特的化学物质。所有CSV文件具有相同的格式(每种化学物质的列中的3列和值(。

我想通过行倾斜串联组合所有这些文件,将所有这些文件组合到一个pandas数据框架中,但在最终数据框架中没有来自每个CSV文件的标头列。我正在使用以下python代码,但是从pd._csv部分获取错误 -

" emptyDataError:无需从文件解析列"

代码如下。

files_path=r"C:UsersDesktopPythonRWE_350files_mergeDrugs"
csvfiles=glob.glob(os.path.join(files_path, "*.csv"))
master_df = []  
for file in csvfiles:
    df = pd.read_csv(file, header = 0)
    master_df.append(df)
result = pd.concat(master_df, ignore_index=True)

我知道CSV文件不是"空"的,因为我可以成功地从命令行中加入它们 - 但是,此方法将每个CSV文件中的标头列保留到最终的"串联" dataframe中 - 因此,这不是真正可接受的。

如何解决此问题?

这看起来不错:

    df = pd.read_csv(file, header=0)

,但显然您的某些输入文件是空的。添加print(file)调试语句将帮助您专注于特定的空位。

您可以在跳跃之前先看一下:

    threshold = 2
    if os.path.getsize(file) > threshold:
        df = pd.read_csv(file, header=0)
        master_df.append(df)

,或者您可以决定比允许更容易提出宽恕:

    try:
        df = pd.read...
    except pandas.errors.EmptyDataError:
        print(file, 'was empty. Continuing...')

最新更新