Python 如何删除熊猫中固定数量的带标签行?
我有一个大熊猫数据框架,它有一个巨大的类不平衡。所以我想将多数标签(我们称这个标签为1)的样本减少到一个固定的数字。假设我有1000个标签1,我想让数据帧删除500个标签1,我该怎么做呢?这里有一个代码,它将删除50%的Python 如何删除熊猫中固定数量的带标签行?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个大熊猫数据框架,它有一个巨大的类不平衡。所以我想将多数标签(我们称这个标签为1)的样本减少到一个固定的数字。假设我有1000个标签1,我想让数据帧删除500个标签1,我该怎么做呢?这里有一个代码,它将删除50%的label==1。您可以决定如何计算您的n\u to\u drop import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(1, 3, size=(10,2)),
label==1
。您可以决定如何计算您的n\u to\u drop
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(1, 3, size=(10,2)),
columns=['Label', 'Other_Col'])
label_1 = df[df['Label'] == 1]
n_to_drop = label_1.shape[0]//2
index_to_drop = label_1.sample(n_to_drop).index
dropped_df = df.drop(index_to_drop)
print(df)
print(dropped_df)
Label Other_Col
0 1 2
1 1 2
2 2 1
3 1 1
4 2 1
5 1 2
6 2 1
7 2 2
8 1 1
9 2 2
Label Other_Col
0 1 2
2 2 1
3 1 1
4 2 1
6 2 1
7 2 2
8 1 1
9 2 2
1.获取(label!=1)2所在的所有行。获取(label==1)3处的所有行。从(2)4中取第一个(或随机)500。将1和3的结果放入一个新的数据框中,假设您的数据框已分配给
df
:df.drop(df[df.label==1].sample(500).index)
。如果你能提供一个非常简洁的答案,那么回答你的问题就容易多了。非常感谢。