我有一个形状为[600 000,19]的数据框。我想根据一个条件过滤前10万行,根据另一个条件过滤下30万行,最后一行过滤第3个条件。我想知道如何做到这一点。
当前,我将数据帧分为3个部分并应用它们各自的条件。然后,我重新连接数据帧。有更好的方法吗?
示例:根据小于5的任何值过滤前100000行,对于第二300 000行,我不希望任何大于40的值,依此类推。
答案 0 :(得分:2)
您可以尝试以下方法:
window.after(1000, up)
答案 1 :(得分:1)
一种方法是将数据帧索引切片与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