Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除熊猫中固定数量的带标签行?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何删除熊猫中固定数量的带标签行?

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)),

我有一个大熊猫数据框架,它有一个巨大的类不平衡。所以我想将多数标签(我们称这个标签为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)),
                  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)
。如果你能提供一个非常简洁的答案,那么回答你的问题就容易多了。非常感谢。