2017-02-14 96 views
1

開始選擇數據幀行,我有以下數據框df1熊貓:只有在特定的列中的值與

X   Y   A  B 
0 484   408   10  3360 
1 478   415   24  3365 
2 504   452   31  yes 
3 613   551   33  maybe 
4 663   665   39  no 

我知道如何選擇該行的哪一列Byes或任何其他特定值:

df1.loc[df1['B'] == 'yes'] 

但我怎麼能選擇不啓動336的所有行?

PS:在我的情況下,33603365是字符串。

回答

4

我會使用類似df[~df.B.str.startswith('336')]的東西,使用str訪問器。例如,

>>> df = pd.DataFrame({'B': ['3360', '3365', 'yes', 'maybe', 'no']}) 
>>> df[~df.B.str.startswith('336')] 
     B 
2 yes 
3 maybe 
4  no 

如果你有多個字符串來檢查,startswith接受前綴的元組。

>>> df[~df.B.str.startswith(('112', '336', 'n'))] 
     B 
2 yes 
3 maybe 
+0

忘了提。你會如何結合兩個或更多的條件,比如'336'和'545'?你可以在accessor中使用'or'嗎? – FaCoffee

+1

@ CF84你可以給'startswith'提供一個元組。例如,'df [〜df.B.str.startswith(('112','336','556'))]'。 – miradulo