合并数据框的非重复行
Consolidating non-duplicate rows of a dataframe
我正在研究一种自动化解决方案,用于在 Python 中训练二元相关多标签分类模型。我正在使用 skmultilearn
,关键元素是 TFIDF 向量化器和 BinaryRelevance(MultinomialNB())
函数。
我 运行 遇到准确性问题,需要提高训练数据的质量。
这是一项非常耗费人力的工作(阅读或手动过滤 Excel 中的数百篇新闻文章),因此我正在寻找使其自动化的方法。我的数据来自大学数据库,我在其中搜索与我正在学习的内容相关的文章。我的最终目标是为所有文章分配六个标签,其中一篇文章可以有零个、一个或多个标签。我目前快速生成训练数据的想法是使用每个标签的标准搜索大学数据库,然后对其进行标记以生成如下所示的内容:
ID
Title
Full Text
Label 1
Label 2
Search Criteria
0
Article 1
blahblah
1
0
Search terms associated with label 1
1
Article 2
blah
1
0
Search terms associated with label 1
2
Article 2
blah
0
1
Search terms associated with label 2
3
Article 4
balala
0
1
Search terms associated with label 2
4
Article 5
baaa
0
1
Search terms associated with label 2
这样做会 return 同一篇文章有多个标签多次。上面显示的文章 2 符合标签 1 和 2 的搜索条件。我现在需要将此类实例合并到此:
ID
Title
Full Text
Label 1
Label 2
1
Article 2
blah
1
1
而不是这个:
ID
Title
Full Text
Label 1
Label 2
Search Criteria
1
Article 2
blah
1
0
label 1
2
Article 2
blah
0
1
label 2
我对 Python 数据处理还很陌生。我第一次探索 Python 是为了探索它的 NLP 包。关于如何解决这个问题的任何想法?我可以使用一些 pandas 数据框功能吗?
试试这个:
df.groupby('Title').agg('max').reset_index().drop('Search Criteria', axis=1)
之前:
ID Title Full Text Label 1 Label 2 Search Criteria
0 0 Article 1 blahblah 1 0 Search terms associated with label 1
1 1 Article 2 blah 1 0 Search terms associated with label 1
2 2 Article 2 blah 0 1 Search terms associated with label 2
3 3 Article 4 balala 0 1 Search terms associated with label 2
4 4 Article 5 baaa 0 1 Search terms associated with label 2
之后:
Title ID Full Text Label 1 Label 2
0 Article 1 0 blahblah 1 0
1 Article 2 2 blah 1 1 <----- Notice that there is only one "Article 2" row, and "Label 1" and "Label 2" are both 1
2 Article 4 3 balala 0 1
3 Article 5 4 baaa 0 1
我正在研究一种自动化解决方案,用于在 Python 中训练二元相关多标签分类模型。我正在使用 skmultilearn
,关键元素是 TFIDF 向量化器和 BinaryRelevance(MultinomialNB())
函数。
我 运行 遇到准确性问题,需要提高训练数据的质量。
这是一项非常耗费人力的工作(阅读或手动过滤 Excel 中的数百篇新闻文章),因此我正在寻找使其自动化的方法。我的数据来自大学数据库,我在其中搜索与我正在学习的内容相关的文章。我的最终目标是为所有文章分配六个标签,其中一篇文章可以有零个、一个或多个标签。我目前快速生成训练数据的想法是使用每个标签的标准搜索大学数据库,然后对其进行标记以生成如下所示的内容:
ID | Title | Full Text | Label 1 | Label 2 | Search Criteria |
---|---|---|---|---|---|
0 | Article 1 | blahblah | 1 | 0 | Search terms associated with label 1 |
1 | Article 2 | blah | 1 | 0 | Search terms associated with label 1 |
2 | Article 2 | blah | 0 | 1 | Search terms associated with label 2 |
3 | Article 4 | balala | 0 | 1 | Search terms associated with label 2 |
4 | Article 5 | baaa | 0 | 1 | Search terms associated with label 2 |
这样做会 return 同一篇文章有多个标签多次。上面显示的文章 2 符合标签 1 和 2 的搜索条件。我现在需要将此类实例合并到此:
ID | Title | Full Text | Label 1 | Label 2 |
---|---|---|---|---|
1 | Article 2 | blah | 1 | 1 |
而不是这个:
ID | Title | Full Text | Label 1 | Label 2 | Search Criteria |
---|---|---|---|---|---|
1 | Article 2 | blah | 1 | 0 | label 1 |
2 | Article 2 | blah | 0 | 1 | label 2 |
我对 Python 数据处理还很陌生。我第一次探索 Python 是为了探索它的 NLP 包。关于如何解决这个问题的任何想法?我可以使用一些 pandas 数据框功能吗?
试试这个:
df.groupby('Title').agg('max').reset_index().drop('Search Criteria', axis=1)
之前:
ID Title Full Text Label 1 Label 2 Search Criteria
0 0 Article 1 blahblah 1 0 Search terms associated with label 1
1 1 Article 2 blah 1 0 Search terms associated with label 1
2 2 Article 2 blah 0 1 Search terms associated with label 2
3 3 Article 4 balala 0 1 Search terms associated with label 2
4 4 Article 5 baaa 0 1 Search terms associated with label 2
之后:
Title ID Full Text Label 1 Label 2
0 Article 1 0 blahblah 1 0
1 Article 2 2 blah 1 1 <----- Notice that there is only one "Article 2" row, and "Label 1" and "Label 2" are both 1
2 Article 4 3 balala 0 1
3 Article 5 4 baaa 0 1