2016-12-25 12 views
2

を働いていないDATAFRAME:フィルタリングは、私は、次のパンダのデータフレームを持つ

In [23]: df 
Out[23]: 
               names 
0          Alabama[edit] 
1      Auburn (Auburn University)[1] 
2    Florence (University of North Alabama) 
3  Jacksonville (Jacksonville State University)[2] 
4   Livingston (University of West Alabama)[2] 
5    Montevallo (University of Montevallo)[2] 
6       Troy (Troy University)[2] 
7 Tuscaloosa (University of Alabama, Stillman Co... 
8     Tuskegee (Tuskegee University)[5] 
9           Alaska[edit] 
10  Fairbanks (University of Alaska Fairbanks)[2] 
11          Arizona[edit] 
12   Flagstaff (Northern Arizona University)[6] 
13     Tempe (Arizona State University) 
14      Tucson (University of Arizona) 

あなたが見ることができるように、names内のエントリのいくつかは、彼らに言葉[edit]を持っています。私はこれらのエントリだけをフィルタリングし、そこから新しいデータフレームを作成したいと思います。

In [24]: df1 = df[df['names'].str.contains("[edit]")] 

しかし、新しいデータフレームdf1は私が欲しいものを私に与えていないと、まだ元のデータフレームのすべてのエントリが含まれています:だから私は試した

In [25]: df1.head() 
Out[25]: 
              names 
0         Alabama[edit] 
1     Auburn (Auburn University)[1] 
2   Florence (University of North Alabama) 
3 Jacksonville (Jacksonville State University)[2] 
4  Livingston (University of West Alabama)[2] 

まさに私が行方不明です何をどのよう私はそれを修正することはできますか?

+3

はこれを試して一度にすべてです: ' "\ [編集\]"'ではなく "'の[編集] "[編集]" 'は' ['e'、 'd'、 'i'、 't'] 'の4文字の文字列を含むすべての文字列を提供するか、' regex = False 'パラメータ – MaxU

+3

MaxUの解決策が有効です。 'df [df ['names']。str.endswith(" [edit] ")]'を使って、文字列の最後の部分をチェックします。 – Zero

+0

Worked!私はまだ正規表現のパターンと混同します。 – Peaceful

答えて

1

あなたは、名前の列を解析するstr.extractを使用し、及びNaドロップすることができますが

df.names.str.extract('(?P<names>.+)\[edit\]', expand=True).dropna() 

enter image description here

関連する問題