Pandas:随机删除行而不打乱数据集
Pandas: Remove rows at random without shuffling dataset
我有一个数据集,需要在保留行顺序的同时省略几行。我的想法是使用一个掩码,其随机数介于 0
和我的数据集的长度之间,但我不确定如何在不打乱行的情况下设置掩码,即类似于对数据集进行采样的方法。
示例:数据集有 5 行和 2 列,我想随机删除一行。
Col1 | Col2
A | 1
B | 2
C | 5
D | 4
E | 0
转换为:
Col1 | Col2
A | 1
B | 2
D | 4
E | 0
随机选择省略了第三行 (Col1='C'
)。
我该怎么办?
以下应该适合您。在这里,我从 df
的索引中随机采样 remove_n
row_ids。之后 df.drop
从数据框中删除这些行并 returns 旧数据框的新子集。
import pandas as pd
import numpy as np
np.random.seed(10)
remove_n = 1
df = pd.DataFrame({"a":[1,2,3,4], "b":[5,6,7,8]})
drop_indices = np.random.choice(df.index, remove_n, replace=False)
df_subset = df.drop(drop_indices)
DataFrame df
:
a b
0 1 5
1 2 6
2 3 7
3 4 8
DataFrame df_subset
:
a b
0 1 5
1 2 6
3 4 8
我有一个数据集,需要在保留行顺序的同时省略几行。我的想法是使用一个掩码,其随机数介于 0
和我的数据集的长度之间,但我不确定如何在不打乱行的情况下设置掩码,即类似于对数据集进行采样的方法。
示例:数据集有 5 行和 2 列,我想随机删除一行。
Col1 | Col2
A | 1
B | 2
C | 5
D | 4
E | 0
转换为:
Col1 | Col2
A | 1
B | 2
D | 4
E | 0
随机选择省略了第三行 (Col1='C'
)。
我该怎么办?
以下应该适合您。在这里,我从 df
的索引中随机采样 remove_n
row_ids。之后 df.drop
从数据框中删除这些行并 returns 旧数据框的新子集。
import pandas as pd
import numpy as np
np.random.seed(10)
remove_n = 1
df = pd.DataFrame({"a":[1,2,3,4], "b":[5,6,7,8]})
drop_indices = np.random.choice(df.index, remove_n, replace=False)
df_subset = df.drop(drop_indices)
DataFrame df
:
a b
0 1 5
1 2 6
2 3 7
3 4 8
DataFrame df_subset
:
a b
0 1 5
1 2 6
3 4 8