如何为每个csv文件使用read_csv,即使它是空的?PythonPandas

2024-10-16 17:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码尝试为每个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]文件File1.csv不存在:'File.csv',不明白为什么?在csv文件夹中,我可以有一个csv文件,没有数据,只有列名

谢谢你的时间


Tags: 文件csvpath代码import程序pandasdate
1条回答
网友
1楼 · 发布于 2024-10-16 17:27:33
# 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有标题但没有数据

如果一些CSV有标题但没有数据,那么一些CSV也有数据。重新创建情况:

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)

相关问题 更多 >