我有数百个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...')