根据列条件删除相等的行数

统计DUB01

我试图减小数据框的大小,并且需要保持每个类(标签)的数量相等。如何基于“标签”列删除相等数量的行。换句话说,我需要在结果数据框中均匀分配类标签。

我有以下数据框:

    pd.DataFrame([{'label': 0, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 1, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 2, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 3, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 1},
 {'label': 4, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 5, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 5},
 {'label': 6, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 7, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 8, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 9, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 0, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 1, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 2, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 3, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 1},
 {'label': 4, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 5, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 5},
 {'label': 6, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 7, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 8, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0},
 {'label': 9, 'pixel1': 0, 'pixel2': 0, 'pixel3': 0, 'pixel4': 0}])

结果数据帧将有10行,每行带有unqiue标签。我需要此答案以适用于具有1000行的较大数据集。

斯科特·波士顿

如果要每个“标签”组中的第一条记录。

df.groupby('label').head(1)

输出:

   label  pixel1  pixel2  pixel3  pixel4
0      0       0       0       0       0
1      1       0       0       0       0
2      2       0       0       0       0
3      3       0       0       0       1
4      4       0       0       0       0
5      5       0       0       0       5
6      6       0       0       0       0
7      7       0       0       0       0
8      8       0       0       0       0
9      9       0       0       0       0

或者,您可以从每个“标签”组中获得随机记录。

df.groupby('label', as_index=False).apply(lambda x: x.sample(1)).reset_index(drop=True)

输出:

   label  pixel1  pixel2  pixel3  pixel4
0      0       0       0       0       0
1      1       0       0       0       0
2      2       0       0       0       0
3      3       0       0       0       1
4      4       0       0       0       0
5      5       0       0       0       5
6      6       0       0       0       0
7      7       0       0       0       0
8      8       0       0       0       0
9      9       0       0       0       0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章