繁体   English   中英

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

[英]How can I use read_csv for each csv files even if it is empty ? Python Pandas

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

假设您有一些非空的 csvs:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM