2017-07-06 21 views

回答

0

一種方法可能是嘗試使用flattenvalueslist comprehension

df = pd.DataFrame([['val1','a-b', 'val3'],['val4','3', 'val5']],columns=['col1','col2', 'col3']) 
print(df) 

輸出:

col1 col2 col3 
0 val1 a-b val3 
1 val4 3  val5 

現在,要搜索-

find_value = [val for val in df.values.flatten() if '-' in val] 
print(find_value) 

輸出:

['a-b'] 
+1

偉大的,謝謝大家! –

0

使用NumPy的:np.core.defchararray.find(a,s)返回INDI的陣列ces,其中子字符串s出現在a; 如果不存在,則返回-1。

(np.core.defchararray.find(df.values.astype(str),'-') > -1).any() 

返回true如果'-'df存在的任何地方。

1

我想在這種情況下使用stack() + .str.contains()

In [10]: df 
Out[10]: 
    a  b  c 
0 1 a - b  w 
1 2  c  z 
2 3  d 2 - 3 

In [11]: df.stack().str.contains('-').any() 
Out[11]: True 

In [12]: df.stack().str.contains('-') 
Out[12]: 
0 a  NaN 
    b  True 
    c False 
1 a  NaN 
    b False 
    c False 
2 a  NaN 
    b False 
    c  True 
dtype: object 
1

您可以使用replace來交換一個正則表達式匹配別的東西,然後檢查平等

df.replace('.*-.*', True, regex=True).eq(True) 
+0

這很聰明,很優雅! – MaxU

+0

@MaxU ty這樣說 – piRSquared

相關問題