簡體   English   中英

如何根據 Python 中的兩列組合分配唯一值?

[英]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.

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