2017-07-26 3 views
1

Meine folgende Abfrage funktioniert und gibt mir eine Dataframe-Untermenge zurück, die nur Zeilen mit James 'Aufzeichnungen enthält.Python Subset Datenrahmen Zeilen mit einem Spaltenwert

pat_db.query('pat_medical_records == "James"') 

Allerdings muss ich die Informationen für Tausende von Patienten abrufen. Also versuche ich einen Variablennamen "a" zuzuweisen und übergebe es der obigen Zeile. Hier bekomme ich Fehler.

a = James 
pat_db.query('pat_medical_records == a') 
UndefinedVariableError: name 'a' is not defined 

ich dann versucht, die Zuordnung "a" manuell:

a = "James" 
pat_db.query('pat_medical_records == a') 
UndefinedVariableError: name 'a' is not defined 

Was bin ich?

+0

'Klaps _db.query ('pat_medical_records == @a') 'sollte den Trick machen – MaxU

Antwort

3

Sie str.format Platzhalter-Zeichenfolgen zum Einfügen angeben können:

a = ... # example; a = "James"  
pat_db.query('pat_medical_records == "{}"'.format(a)) 
+0

Hallo, ich habe versucht, Ihre vorgeschlagene Vorgehensweise. Allerdings bekomme ich immer noch einen Fehler. Mit a = "James Holt" SyntaxError: ungültige Syntax –

+0

@continuous_learner Ich habe es herausgefunden. Doppelte Zitate fehlten. Überprüfen Sie meine Bearbeitung? –

+0

Arbeitete perfekt! Vielen Dank. –

2

Try this:

my_list = ['James','Joe',...] 
pat_db.query('pat_medical_records in @my_list') 

Sie möchten this great Pandas documentation with lots of useful examples

Demo lesen:

In [81]: df = pd.DataFrame({'name': np.random.choice(['aaa','bbb','ccc','ddd','eee'], 20), 
          'age':np.random.randint(5, 99, 20)}) 

In [82]: df 
Out[82]: 
    age name 
0 50 aaa 
1 60 ccc 
2 93 ddd 
3 40 aaa 
4 66 ddd 
5 98 eee 
6 95 eee 
7 42 eee 
8 53 bbb 
9 74 ddd 
10 93 ccc 
11 76 ccc 
12 74 aaa 
13 74 eee 
14 83 ddd 
15 42 ddd 
16 51 ccc 
17 84 bbb 
18 37 eee 
19 24 aaa 

In [83]: flt = ['aaa', 'eee'] 

In [84]: df.query("name in @flt") 
Out[84]: 
    age name 
0 50 aaa 
3 40 aaa 
5 98 eee 
6 95 eee 
7 42 eee 
12 74 aaa 
13 74 eee 
18 37 eee 
19 24 aaa 
+0

Danke für die Antwort. Ich schätze den Link auch. –

+0

@continuous_learner, Sie sind willkommen :) – MaxU

Verwandte Themen