簡體   English   中英

使用一列對值進行分組,並使用 Pandas 數據框返回另一列中具有最大值的值

[英]Group the values using one column and return the one having max value in other column using pandas dataframe

以下是我的數據框示例:

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 列對元素進行分組,並為每個具有最大修訂 ID 的項目僅返回一行。 我已經根據 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與選擇列檢查dupes ,只保留最后一個值:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM