使用Python 2.7和Pandas
我必须解析我的目录并绘制一组CSV。如果CSV为空,脚本将中断并生成错误消息:
pandas.io.common.EmptyDataError: No columns to parse from file如果我将我的文件路径存储在
file_paths=[]如何读取每个CSV并仅绘制非空的CSV?如果我有一个定义为df=[]的空数据帧,我会尝试以下代码
for i in range(0,len(file_paths)):
if pd.read_csv(file_paths[i] == ""):
print "empty"
else df.append(pd.read_csv(file_paths[i],header=None))发布于 2017-02-10 01:35:57
您可以使用内置的try和except语法跳过返回错误的文件,如下所示:
在这里描述:Try/Except in Python: How do you properly ignore Exceptions?
for i in range(0,len(file_paths)):
try:
pd.read_csv(file_paths[i])
### Do Some Stuff
except:
continue
# or pass这将尝试读取每个文件,如果不成功,则继续读取下一个文件。
发布于 2017-02-10 01:38:43
我只会捕获适当的异常,因为在python中不推荐使用catch all:
import pandas.io.common
for i in range(0,len(file_paths)):
try:
pd.read_csv(file_paths[i])
except pandas.io.common.EmptyDataError:
print file_paths[i], " is empty"发布于 2018-07-08 17:43:03
注意,对于pandas 0.22.0 (我可以肯定),对于空csv抛出的异常是pandas.errors.EmptyDataError。如果您正在导入像import pandas as pd这样的熊猫,那么使用pd而不是pandas。
如果csv文件名在数组manyfiles中,那么
import pandas as pd
for filename in manyfiles:
try:
df = pd.read_csv(filename)
except pd.errors.EmptyDataError:
print('Note: filename.csv was empty. Skipping.')
continue # will skip the rest of the block and move to next file
# operations on df我不确定pandas.io.common.EmptyDataError是否仍然有效。在参考文档中找不到它。我也建议不要使用“包罗万象”的except:,因为你不知道是不是其他原因导致了这个问题。
https://stackoverflow.com/questions/42143249
复制相似问题