2017-09-16 64 views
0
df = pd.DataFrame() 
df['col'] = [['a','b'], ['c', 'd']] 

if not (['a', 'b'] in df.as_matrix(['col'])): 
    print("hello") 

由於['a', 'b']是在df.as_matrix(['col']),print(hello)不應執行。但是,它是。if語句與熊貓as_matrix函數

我不明白爲什麼會出現這種情況。我如何編輯我的代碼,以便我的if語句不打印「hello」?

+0

@JohnGalt這工作!如果您想發佈,我很樂意選擇您的答案作爲正確的答案。謝謝。 – PiccolMan

回答

1

使用.tolist()代替

In [569]: ['a', 'b'] in df['col'].tolist() 
Out[569]: True 

或者,迭代NumPy的陣列。

In [570]: any([x[0] == ['a', 'b'] for x in df.as_matrix(['col'])]) 
Out[570]: True 

詳細

In [571]: df.as_matrix(['col']) 
Out[571]: 
array([[['a', 'b']], 
     [['c', 'd']]], dtype=object) 

In [572]: df['col'].tolist() 
Out[572]: [['a', 'b'], ['c', 'd']]