以下是我的数据框的示例:
revisionId | itemId | wikidataType
290397666 | 23 | Q5
307190482 | 23 | Q5
292002833 | 80 | Q5
292428272 | 80 | Q5
305018745 | 80 | Q5
305018964 | 80 | Q5
305019084 | 80 | Q5
301731639 | 181 | Q5
303692414 | 181 | Q5
306600439 | 192 | Q5
294596767 | 206 | Q5
294597048 | 206 | Q5
我想使用 itemId 列对元素进行分组,并为每个具有最大 revisionId 的项目仅返回一行。我已经根据 wikidataType、itemId 和 revisionId 对它们进行了排序。以下是我希望我的数据框的样子:
revisionId | itemId | wikidataType
307190482 | 23 | Q5
305019084 | 80 | Q5
303692414 | 181 | Q5
306600439 | 192 | Q5
294597048 | 206 | Q5
此外,此处此 wikidataType 列仅包含一个值“Q5”。但在整个数据框中,有 100 种不同的类型。但这可能不是问题,因为我可以迭代这 100 种类型,因为我已经修复了它们的值。有人对此有想法吗? 提前致谢。
最佳答案
需要sort_values
+ drop_duplicates
选择列来检查重复
并仅保留最后一个值:
df = (df.sort_values(by=['wikidataType', 'itemId', 'revisionId'])
.drop_duplicates(['itemId','wikidataType'], keep='last'))
print (df)
revisionId itemId wikidataType
1 307190482 23 Q5
6 305019084 80 Q5
8 303692414 181 Q5
9 306600439 192 Q5
11 294597048 206 Q5
关于python - 使用一列对值进行分组,并使用 pandas 数据框返回另一列中具有最大值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46789055/