目標:提取list列的前 N ??個不同值中的一個。
Distinct,意思是彼此不同但不是整個DataFrame獨有的。
例如,col A的前 5 個不同值。
資料框:
A B C
0 BERT foo bar
1 BERT foo bar
2 MLP foo bar
3 Albert foo bar
4 Albert foo bar
5 Albert foo bar
6 Roberta foo bar
7 Roberta v2 foo bar
8 Roberta v2 foo bar
9 BigBird foo bar
10 Muppet foo bar
期望的輸出:
top_5 = ['BERT', 'MLP', 'Albert', 'Roberta', 'Roberta v2']
實際上,忽略重復項和所有其他先前的不同值。
如果我在這篇文章中還有什么需要澄清的,請告訴我。
uj5u.com熱心網友回復:
使用Series.unique與選擇前5個值,并轉換到串列:
first_5_unique = df.A.unique()[:5].tolist()
或者使用Series.drop_duplicates具有Series.head:
first_5_unique = df.A.drop_duplicates().head().tolist()
uj5u.com熱心網友回復:
如果您有一個大資料框,一個非常有效的解決方案是在itertools/ 的幫助下使用生成器more_itertools.unique_everseen:
# pip install more-itertools
from itertools import islice
from more_itertools import unique_everseen
list(islice(unique_everseen(df['A']), 5))
如果您正在處理數千行,這會快幾個數量級,因為一旦收集到足夠的元素,迭代就會停止(與使用 pandas' 讀取整個列相比unique)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/405544.html
標籤:
