2016-12-25 7 views
2

arbeitet Ich habe einen folgenden Pandas Datenrahmen:Filtern von Zeilen von Pandas Datenrahmen nicht

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) 

Wie Sie sehen können, einige der Einträge in names haben das Wort [edit] in ihnen. Ich möchte nur diese Einträge filtern und daraus einen neuen Datenrahmen erstellen. Also habe ich versucht:

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

jedoch der neue Datenrahmen df1 mir nicht geben, was ich will und noch enthalten alle Einträge des ursprünglichen Datenrahmen:

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] 

Genau das, was ich bin fehle und wie kann ich es reparieren?

+3

try this: ' "\ [Bearbeiten \]"' statt '" [Bearbeiten] "' - '" [edit] "' ​​ist eine RegEx, die Ihnen alle Zeichenfolgen gibt, die eines dieser vier Zeichen enthalten: '['e', 'd', 'i', 't']' oder einfach 'regex = False verwenden 'Parameter – MaxU

+3

MaxU-Lösung wird funktionieren. Sie können 'df [df ['names']. Str.endswith (" [edit] ")]' verwenden, um nach Endteilen der Zeichenfolge zu suchen. – Zero

+0

Arbeitete! Ich werde immer noch mit Regex-Mustern verwirrt. – Peaceful

Antwort

1

können Sie str.extract verwenden, um zu analysieren, Namensspalte, und na fallen ist alles auf einmal

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

enter image description here

Verwandte Themen