使用列值的Python子集数据帧行

时间:2017-07-26 16:43:52

标签: python dataframe

我的以下查询有效,并返回一个Dataframe子集,其中只包含包含James记录的行。

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

但是,我需要检索数千名患者的信息。所以我试图分配一个变量名称" a"并将其传递给上述行。我在这里得到错误。

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

然后我尝试分配" a"手动:

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

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您可以使用str.format指定插入的占位符字符串:

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

答案 1 :(得分:1)

试试这个:

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

您可能需要阅读this great Pandas documentation with lots of useful examples

演示:

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