将数百个csv文件按行串联到单个数据帧中

时间:2019-05-26 20:07:53

标签: python-3.x pandas

我有数百个csv文件-每个文件都对应一种独特的化学物质。所有的csv文件都具有相同的格式(每种化学品3列,各列中的值)。

我想通过行串联将所有这些文件合并到单个pandas数据框中,但在最终数据框中没有每个csv文件的标题列。我正在使用以下Python代码,但从pd.read_csv部分获得错误-

“ EmptyDataError:没有可从文件中解析的列”

代码如下。

files_path=r"C:\Users\Desktop\Python\RWE_350files_merge\Drugs"
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文件的标题列保留到最终的“连接”数据帧中-因此,这实际上是不可接受的。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

这看起来不错:

    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...')