我有一个被抓取网站的熊猫数据框,其中包含网站标识符,网站的文字和标签。少数网站有两个标签,但是由于我想首先训练一个标签分类器,因此我想为每个网站创建一个只带有一个标签的数据版本(我知道这有点麻烦)。我的数据集中的标签不平衡(有些标签经常出现,有些很少出现)。如果我删除重复的网站ID,我想删除最常见的标签。这是带有多个标签的数据集的样子:
ID Label Text
1 a some text
1 b other text
1 a data
2 a words
2 c more words
3 a text
3 b short text
我的想法是按标签的稀有性对每个网站标识符中的标签列进行排序。为此,我首先在标签列上执行
value_counts(ascending = True)
,以获取按稀有度排序的所有标签的列表。to_sort = [c, b, a]
然后,我想使用该列表按稀有度对每个网站ID进行排序。不过,我不确定该怎么做。结果应如下所示:
ID Label Text
1 b other text
1 a some text
1 a data
2 c more words
2 a words
3 b short text
3 a text
然后,我将使用
df.drop_duplicates(subset = 'ID', keep = 'first')
保留最稀有的标签。如何进行分类? 最佳答案
使用有序的categorical
,因此可能使用sort_values
:
to_sort = list('cba')
df['Label'] = pd.Categorical(df['Label'], ordered=True, categories=to_sort)
df = df.sort_values(['ID','Label'])
print (df)
ID Label Text
1 1 b other text
0 1 a some text
2 1 a data
4 2 c more words
3 2 a words
6 3 b short text
5 3 a text