pandas Python:如何使用if/else读取可以为空的csv

ubof19bj  于 2023-06-20  发布在  Python
关注(0)|答案(2)|浏览(179)

我想创建一个try/except或if/else语句来根据输入csv创建 Dataframe 。但是输入csv可能是空白的,所以如果我做一个blanket pd.read_csv(file_name),当csv为空时,它会抛出一个错误。
我怎样才能做到:

if pd.read_csv(file_name) is successful:
   new_df = pd.read_csv(file_name)
else:
   new_df = pd.DataFrame() # to set this as an empty data frame

我以前试过:

try:
    new_df = pd.read_csv(file_name)
except:
    new_df = pd.DataFrame() # to set this as an empty data frame

这不起作用,因为它总是将new_df设置为空df,即使csv不为空
提前感谢!!!

nxagd54h

nxagd54h1#

尝试用pandas.read_csv读取空CSV会引发pandas.errors.EmptyDataError异常,因此您可以专门捕获它

import pandas as pd

try:
    df = pd.read_csv('my_file.csv')
except pd.errors.EmptyDataError:
    df = pd.DataFrame()
1u4esq0p

1u4esq0p2#

您可以使用try/except捕获异常:

try:
   new_df = pd.read_csv(file_name)
except SomePandasError:  # replace this with the actual exception
   new_df = pd.DataFrame()

except将 * 仅 * 在引发指定的异常类型时发生。如果你做了一个裸的try/except,你总是得到一个空白的数据框架,这意味着一个异常 * 总是 * 被引发-确保只捕捉到你期望的异常(即:在空CSV上引发的错误),这样如果您遇到其他错误,它将正常引发,您可以找出如何修复它。

相关问题