我有数百个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文件的标题列保留到最终的“连接”数据帧中-因此,这实际上是不可接受的。
如何解决此问题?
答案 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...')