2 回答

TA貢獻2003條經驗 獲得超2個贊
您可以嘗試以下方法:
import pandas as pd
sample = pd.DataFrame({'x' : pd.np.arange(100),
'colname': pd.np.arange(100)})
conditions = [('index < 5', 'colname < 3'),
('index > 50', 'index < 100', 'colname < 55')]
sample.query('|'.join(map(lambda x: '&'.join(x), conditions)))

TA貢獻1843條經驗 獲得超7個贊
方法是使用數據幀索引切片pd.concat來構建完整的布爾系列:
import numpy as np
import pandas as pd
np.random.seed(0)
df=pd.DataFrame(np.random.randint(0,50,60))
df[pd.concat([df.iloc[:10] > 10, df[11:40] < 30, df[41:] % 2 == 0])]
前 10 條記錄過濾小于 10 的值,接下來的 30 個值過濾大于 30 的值,最后一個值檢查偶數。
然后您可以使用 dropna 刪除所有 NaN 值
輸出:
0
0 44.0
1 47.0
2 NaN
3 NaN
4 NaN
5 39.0
6 NaN
7 19.0
8 21.0
9 36.0
10 NaN
11 6.0
12 24.0
13 24.0
14 12.0
15 1.0
16 NaN
17 NaN
18 23.0
19 NaN
20 24.0
21 17.0
22 NaN
23 25.0
24 13.0
25 8.0
26 9.0
27 20.0
28 16.0
29 5.0
30 15.0
31 NaN
32 0.0
33 18.0
34 NaN
35 24.0
36 NaN
37 29.0
38 19.0
39 19.0
40 NaN
41 NaN
42 32.0
43 NaN
44 NaN
45 32.0
46 NaN
47 10.0
48 NaN
49 NaN
50 NaN
51 28.0
52 34.0
53 0.0
54 0.0
55 36.0
56 NaN
57 38.0
58 40.0
59 NaN
添加回答
舉報