[英]How to get the number of unique combinations of two columns that occur in a python pandas dataframe
[英]How to assign unique value based on two columns combinations in Python?
我有這個化石數據,並想為每個獨特的事件創建一個具有唯一值的新列
GENUS = (['Microtherium', 'Bachitherium', 'Coelodonta', ..., 'Murina',
'Boopsis', None], dtype=object)
SPECIES = (['Microtherium', 'Bachitherium', 'Coelodonta', ..., 'Murina',
'Boopsis', None], dtype=object)
#dropping the duplicates
dffossil[['GENUS', 'SPECIES']].drop_duplicates
現在我想為每個唯一的 GENUS 和 SPECIES 組合創建一個具有唯一編號的新列。
如果您只是想要 GENUS 和 SPECIES 的每個組合的唯一標識符,您可以執行以下操作:
注意:假設 GENUS 或 SPECIES 可以包含None
值,這會使過程稍微復雜化。
所以給定一個形式的DF:
GENUS SPECIES
0 Murina Coelodonta
1 Murina Microtherium
2 Microtherium Murina
3 Bachitherium Microtherium
4 Coelodonta None
5 Coelodonta Coelodonta
6 Microtherium Coelodonta
7 Microtherium Murina
8 Microtherium Bachitherium
9 Murina Microtherium
添加一個唯一標識 GENUS 和 SPECIES 組合的列。 我們將此列稱為“ID”。
考慮到None
條目的可能性,定義一個函數來創建條目的哈希。
def hashValues(g, s):
if g == None:
g = "None"
if s == None:
s = 'None'
return hash(g + s)
要添加列,請使用以下命令:
df['ID'] = [hashValues(df['GENUS'].to_list()[i], df['SPECIES'].to_list()[i]) for i in range(df.shape[0])]
產生:
GENUS SPECIES ID
0 Murina Coelodonta -6583287505830614713
1 Murina Microtherium 6019734726691011903
2 Microtherium Murina -2318069015748475190
3 Bachitherium Microtherium 5795352218934423262
4 Coelodonta None 4851538573581845777
5 Coelodonta Coelodonta -5115794138222494493
6 Microtherium Coelodonta 2603682196287415014
7 Microtherium Murina -2318069015748475190
8 Microtherium Bachitherium -2746445536675711990
9 Murina Microtherium 6019734726691011903
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.