python - 即使每个 csv 文件为空,如何使用 read_csv ?蟒蛇熊猫
问题描述
我有这段代码可以尝试为每个 csv 文件执行这个程序:
import pandas as pd
import os
directory_path_csv = r'CSV_Files'
for file in os.listdir(directory_path_csv):
if file.endswith(".csv"):
filename = file
df = pd.read_csv(filename, usecols= ['date','time', 'toto','tata'], parse_dates=[['date', 'time']])
但我有这个错误:FileNotFoundError: [Errno 2] File File1.csv does not exist: 'File.csv'不明白为什么?在 csv 文件夹中,我可以拥有没有数据的 csv 文件,只有列的名称。
谢谢你的时间 !
解决方案
# necessary imports
import pandas as pd
import glob
假设您有一些非空的 csv:
for x in range(10):
pd.DataFrame(['exampleDf'+repr(x)]).to_csv('nonempty'+repr(x)+'.csv')
和一个空的:
# this is a shell command:
touch empty.csv
将所有 csv 文件名放到一个列表中
csvs=glob.glob('*csv')
您可以遍历它们以捕获EmptyDataErrors:
for csv in csvs:
try:
pd.read_csv(csv)
except pd.errors.EmptyDataError:
pass # or do whatever you want with empty csvs
编辑:如果 csv 有标题但没有数据
如果某些 csvs 有标题但没有数据,则有些也有数据。重现情况:
for x in range(10):
pd.DataFrame({'header':[1,2]}).to_csv('nonempty'+repr(x)+'.csv')
for x in range(10):
pd.DataFrame({'header':[]}).to_csv('empty'+repr(x)+'.csv')
然后可以这样做:
csvs=glob.glob('*csv')
for csv in csvs:
df = pd.read_csv(csv)
if len(df.index)>0:
# then df is non-empty, do whatever with it
print(df)
else:
# then df is empty
print(df)
推荐阅读
- asp.net - 我不能在 .cshtml 中使用 Html.RenderAction
- javascript - 如何仅对数组的一部分进行排序?在给定索引之间
- node.js - 使用 npm "npm install -g @vue/cli" 时出现 Vue Cli 错误
- html - 输入字段在断点处未正确对齐
- sql - 可滚动游标是服务器端构造吗?
- java-8 - java 8中发生冲突时如何将值添加到列表中?
- asp.net-core - 如何获取在 Blazor 中单击的元素的 css 属性?
- reactjs - Spring Boot 中用于 REST 服务的 JDBC 身份验证
- javascript - 处理子组件点击父组件
- c# - 向上、向下、向左或向右滑动时,如何调用另一个类中的方法?Unity2D