我想每3
行选择5
行。例如,前5
行,我想保留最后3
行。
Input:
import pandas as pd
df = pd.DataFrame({'a': np.arange(16)})
print(df)
Output:
a
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
Expected:
a
2 2
3 3
4 4
7 7
8 8
9 9
12 12
13 13
14 14
希望获得帮助!
答案 0 :(得分:1)
将groupby
与下限索引一起使用,并按tail
获取最后3
行:
df = df.groupby(df.index // 5).tail(3)
print(df)
a
2 2
3 3
4 4
7 7
8 8
9 9
12 12
13 13
14 14
15 15 <- last group have only one value, so tail select it
另一个想法是,通过np.arange
获取每行的索引值,并将其整形为二维数组,选择最后一个“列”,并以ravel
展平,获得与实际索引值的交集,并以{{1 }}:
loc
详细信息:
N = 5
M = 3
pos = np.arange((len(df) // N + 1) * N).reshape(-1, N)[:, -M:].ravel()
idx = np.intersect1d(df.index, pos)
df = df.loc[idx]
print(df)
a
2 2
3 3
4 4
7 7
8 8
9 9
12 12
13 13
14 14