2017-09-15 65 views
0

我已經定義了一個函數是這樣的:檢查大熊貓據幀被傳遞給函數

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

而且我想,以測試df是通過與否(df是大熊貓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(). 
+0

我得到ValueError異常不是從你向我們展示的東西來的感覺。 – GiantsLoveDeathMetal

+1

您知道在更改文件後,您需要在運行前保存它? –

+1

@GiantsLoveDeathMetal'bool(pd.DataFrame()== None)'引發完全相同的ValueError。 OP應該將他的測試改爲'df is None'。 'df == None'將所有'df'的值與'None'進行比較,返回一個布爾值的DataFrame。 'if'然後詢問'bool()',但'DataFrame的真值不明確' –

回答

1

像這樣的事:

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 
""" 
+0

我試試這個「if〜isinstance(df,pd.DataFrame):」但是得到了「ValueError:DataFrame的真值是不明確的,使用a.empty,a.bool ),a.item(),a.any()或a.all()。「 – Nicolas

+0

是的,你沒有幫助這個重複的錯誤信息,告訴我們完整的回溯 - 請參閱@Jon Clements♦評論 – GiantsLoveDeathMetal

+0

這就是我的結果「〜(isinstance(d,pd.DataFrame)) Out [62]: -2「我想這不能在一個如果。怎麼回事〜不要回復「假」? – Nicolas

2

你可以說不是:

if df is None: 

如果你想檢查一個數據幀包含的數據檢查:

if not df.empty: 
+0

如果我嘗試「如果DF是無:」但通過一個數據幀我收到此消息 ValueError:DataFrame的真值是不明確的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。 – Nicolas

+1

@Nicolas你不可能使用'is'而不是'=='來獲取'ValueError' ... –

+1

@Nicolas你忘了按Ctrl + S並保存你的代碼。 –

2

嘗試直接進行類型檢查:

if isinstance(df, pandas.DataFrame): 
    pass 

Keep in mi nd,isinstance的第二個參數取決於你有熊貓導入的命名空間。這通常是pd,這將產生pd.DataFrame。 看看this article