我正在尝试使用pandas读取csv文件数量的内容并将其加载到pandas数据帧中。
所有csv文件都包含标题(第1行),它定义了列名称,然后是数字数据。我只对阅读数字数据感兴趣,因此我使用了skiprows = [0]选项。
例如:
path = 'mypath'
file = 'example1.csv'
我的example1.csv就像:
time varA varB
1.0 2.3 3.2
2.0 4.2 3.4
... ... ...
然后我使用这段代码:
array_list = []
for file in os.listdir(path):
df = pd.read_csv(file, skiprows=[0], header=None)
array_list.append(df.as_matrix())
这一直有效,直到我得到一个文件,它只包含标题(只有一个原始文件),没有数据,如下例所示,example2.cvs:
time varA varB
我收到了错误
EmptyDataError: No columns to parse from file
有关如何引入仅包含标题的文件例外的任何建议,这并不意味着它是空的吗?
非常感谢您的帮助,
MarcoC
答案 0 :(得分:0)
如何使用try..except
?
array_list = []
for file in os.listdir(path):
try:
df = pd.read_csv(file, skiprows=[0], header=None)
array_list.append(df.as_matrix())
except EmptyDataError:
# empty file, skip
continue
这样做的缺点是len(array_list) != len(os.listdir(path))
。如果您确实想要空数据框以避免这种情况,请使用header='infer'
,例如@sam建议:
array_list = []
for file in os.listdir(path):
df = pd.read_csv(file, header='infer')
array_list.append(df.as_matrix())
对于内容为
的文件time varA varB
它返回
Empty DataFrame
Columns: [time varA varB]
Index: []
答案 1 :(得分:0)
header ='infer'或header = 0应该做的伎俩