删除所选列表中不存在的项



我正在解决一个多标签分类问题。数据集的格式为

| question | tags |
| ----- | ------- |
| How to print an array? | ['tag1' , 'tag2' , 'tag3'] |
| MathError: Cannot divide 0/0 | ['tag1' , 'tag6'] |
| Vertically align text to top within a UILabel | ['tag9', 'tag3'] |

我只需要像前1000个标签,并删除所有不包含标签的行。并且,如果它不属于前1000个标签,也从标签列中删除标签。

首先使用DataFrame.explode将列表转换为列,然后使用Series.value_counts获得顶部标签,并在boolean indexing中使用Series.isin过滤:

df1 = df.explode('tags')
top = df1['tags'].value_counts().index[:1000]
df2 = df1[df1['tags'].isin(top)].groupby('question')['tag'].agg(list).reset_index()

最新更新