如何为每个csv文件使用read_csv,即使它为空?蟒蛇熊猫

时间:2020-10-20 17:08:18

标签: python pandas dataframe

我有这段代码尝试为每个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文件。

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

# 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具有标头但没有数据,则某些cv也具有数据。重新创建情况:

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)