2017-08-28 31 views
1

我有一個數據幀與列ClientAccount其中包含我想要過濾掉很多測試數據數據。熊貓柱過濾字符串給出了意想不到的結果

要了解有多少行包含測試客戶端,我做了以下內容:

test_users = order_data[order_data['ClientAccount'].str.contains("DEMO|test")==True] 

它返回Name: ClientAccount, Length: 2493

酷,所以2.493排出來的71.458原始行。

然後爲了得到不是這些2.493行的所有內容,我不應該只是做相反的事嗎?

order_data = order_data[order_data['ClientAccount'].str.contains("DEMO|test")==False] 

雖然這給了48.046行,但是這有什麼意義呢?我錯過了什麼?

+1

是否可能有一些NaN值? – jezrael

+0

哦,就是這樣。在df上的isnull()。sum()'返回20.919 .. – Khaine775

回答

1

我認爲有NaNNone值,所以可能使用參數nastr.contains。也爲反演布爾面膜(True + FalseSeries)使用~

mask = order_data['ClientAccount'].str.contains("DEMO|test", na=False) 

test_users1 = order_data[mask] 
test_users2 = order_data[~mask] 

樣品:

order_data = pd.DataFrame({'ClientAccount':['DEMO ss','test f','dfd', None, np.nan, 'test']}) 
print (order_data) 
    ClientAccount 
0  DEMO ss 
1  test f 
2   dfd 
3   None 
4   NaN 
5   test 

mask = order_data['ClientAccount'].str.contains("DEMO|test", na=False) 

test_users1 = order_data[mask] 
test_users2 = order_data[~mask] 

print (test_users1) 
    ClientAccount 
0  DEMO ss 
1  test f 
5   test 

print (test_users2) 
    ClientAccount 
2   dfd 
3   None 
4   NaN 

沒有參數,我得到錯誤:

mask = order_data['ClientAccount'].str.contains("DEMO|test") 

ValueError: cannot index with vector containing NA/NaN values

相關問題