检查 pandas 数据帧是否已传递给函数

Check if pandas dataframe was passed to function

我有一个这样定义的函数:

def demand_cleaning(df=None, location, output,_input,tables):

我想测试一下 df 是否通过(df 是 pandas DataFrame

如果df没有通过我想做类似

的事情
if df is None:
    df = pd.read_pickle(tables + "Demand Raw")

但是这个测试现在不起作用。我明白了

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

你可以这样说:

if df is None:

如果要检查数据帧是否包含数据检查:

if not df.empty:

尝试直接执行类型检查:

if isinstance(df, pandas.DataFrame):
    pass

请记住,isinstance 的第二个参数取决于您导入 pandas 的名称空间。这通常是 pd,这会产生 pd.DataFrame。 看看 this article.

像这样的事情会做:

def g(var):
    if isinstance(var, pd.DataFrame):
        print("good to go")
    else:
        print("Nah!")
        print(type(var))

a = None 

b = pd.DataFrame()

print(g(a))

"""
output>>> 

Nah!
<type 'NoneType'>
"""

print(g(b))

"""
output>>> 

good to go
"""