2015-02-23 59 views

回答

50

大熊貓已矢量字符串操作,所以你可以過濾掉包含字符串的行你不想:

In [91]: df = pd.DataFrame(dict(A=[5,3,5,6], C=["foo","bar","fooXYZbar", "bat"])) 

In [92]: df 
Out[92]: 
    A   C 
0 5  foo 
1 3  bar 
2 5 fooXYZbar 
3 6  bat 

In [93]: df[df.C.str.contains("XYZ") == False] 
Out[93]: 
    A C 
0 5 foo 
1 3 bar 
3 6 bat 
+18

雖然你寫的是正確的,更具可讀性,更短的方法是:'DF [〜df.C.str.contains(「XYZ」) ]' – EdChum 2015-02-23 17:58:16

15

如果字符串約束不只是一個字符串,你可以將這些相應的行搭配:

df = df[~df['your column'].isin(['list of strings'])] 

以上將丟棄包含列表

+0

你會怎麼做呢?我想檢查列值是否包含任何字符串。僞:'爲list_of_strings中的字符串,檢查列是否包含它' – radtek 2017-04-23 05:39:42

+1

只需刪除「〜」 df = df [df ['your column']。isin(['list of strings'])] – ksooklall 2017-06-26 18:28:30

+0

已經有了,但是謝謝 – radtek 2017-06-27 17:54:57

5

的元素本,如果你想比較確切的字符串只會工作的所有行。 如果您想檢查列字符串是否包含列表中的任何字符串,它將不起作用。 與列表進行比較正確的做法應該是:

searchfor = ['john', 'doe'] 
    df = df[~df.col.str.contains('|'.join(searchfor))] 
相關問題