Я считаю, что синтаксис предыдущих ответов является избыточным и трудно запоминаемым. Пандас представил метод query()
в v0.13, и я предпочитаю его. Для вашего вопроса вы можете сделать df.query('col == val')
Воспроизводится из http://pandas.pydata.org/pandas-docs/version/0.17.0/indexing.html#indexing-query
In [167]: n = 10
In [168]: df = pd.DataFrame(np.random.rand(n, 3), columns=list('abc'))
In [169]: df
Out[169]:
a b c
0 0.687704 0.582314 0.281645
1 0.250846 0.610021 0.420121
2 0.624328 0.401816 0.932146
3 0.011763 0.022921 0.244186
4 0.590198 0.325680 0.890392
5 0.598892 0.296424 0.007312
6 0.634625 0.803069 0.123872
7 0.924168 0.325076 0.303746
8 0.116822 0.364564 0.454607
9 0.986142 0.751953 0.561512
# pure python
In [170]: df[(df.a < df.b) & (df.b < df.c)]
Out[170]:
a b c
3 0.011763 0.022921 0.244186
8 0.116822 0.364564 0.454607
# query
In [171]: df.query('(a < b) & (b < c)')
Out[171]:
a b c
3 0.011763 0.022921 0.244186
8 0.116822 0.364564 0.454607
Вы также можете получить доступ к переменным в среде, добавив @
.
exclude = ('red', 'orange')
df.query('color not in @exclude')
Следующие работы для меня:
sysuse auto, clear
collapse (sum) price mpg, by(make)
estpost tabstat price mpg, by(make)
matrix A = e(price)', e(mpg)'
esttab matrix(A), title("Summary statistics: mean") nomtitle
Summary statistics: mean
--------------------------------------
price mpg
--------------------------------------
1 4099 22
2 4749 17
3 3799 22
4 9690 17
5 6295 23
6 9735 25
7 4816 20
8 7827 15
9 5788 18
10 4453 26
11 5189 20
12 10372 16
13 4082 19
14 11385 14
15 14500 14
16 15906 21
17 3299 29
18 5705 16
19 4504 22
20 5104 22
21 3667 24
22 3955 19
23 6229 23
24 4589 35
25 5079 24
26 8129 21
27 3984 30
28 4010 18
29 5886 16
30 6342 17
31 4296 21
32 4389 28
33 4187 21
34 5799 25
35 4499 28
36 11497 12
37 13594 12
38 13466 14
39 3995 30
40 3829 22
41 5379 14
42 6165 15
43 4516 18
44 6303 14
45 3291 20
46 8814 21
47 5172 19
48 4733 19
49 4890 18
50 4181 19
51 4195 24
52 10371 16
53 12990 14
54 4647 28
55 4425 34
56 4482 25
57 6486 26
58 4060 18
59 5798 18
60 4934 18
61 5222 19
62 4723 19
63 4424 19
64 4172 24
65 3895 26
66 3798 35
67 5899 18
68 3748 31
69 5719 18
70 7140 23
71 5397 41
72 4697 25
73 6850 25
74 11995 17
Total 6165.257 21.2973
--------------------------------------