我有兩個資料集:一個包含客戶的家庭詳細資訊,另一個包含與這些客戶相關的類。出于隱私原因,我想用 ID 替換客戶的姓名。資料的一個例子是
資料集 1(客戶的家庭關系)
Customer Relative Age Note
Amber Bryan Viola Walter 22 none
Amber Bryan Christopher Lyl 22 none
Viola Walter Stephan Said 43 xxx
Sion X. Martin Grey 64 none
資料集 2(類)
Customer Class Age
Amber Bryan 1 22
Viola Walter 2 43
Christopher Lyl -2 41
Stephan Said 1 42
Sion X. 0 64
Martin Grey 1 34
我想獲得以下資料集:
Customer Relative Age Note
1 2 22 none
1 3 22 none
2 4 43 xxx
5 6 64 none
和
Customer Class Age
1 1 22
2 2 43
3 -2 41
4 1 42
5 0 64
6 1 34
如果根據資料集 2 中提供的串列給出 ID 的數量,那就太好了。
我正在考慮為資料集 2 創建一個索引列,但我不知道如何在資料集 1 中使用此資訊,同時考慮到我需要為客戶和親戚分配 ID。
uj5u.com熱心網友回復:
這是您的輸入:
import pandas as pd
df1 = pd.DataFrame.from_dict({'Customer': {0: 'Amber Bryan',
1: 'Amber Bryan',
2: 'Viola Walter',
3: 'Sion X.'},
'Relative': {0: 'Viola Walter',
1: 'Christopher Lyl',
2: 'Stephan Said',
3: 'Martin Grey'},
'Age': {0: '22', 1: '22', 2: '43', 3: '64'},
'Note': {0: 'none', 1: 'none', 2: 'xxx', 3: 'none'}})
df2 = pd.DataFrame.from_dict({'Customer': {0: 'Amber Bryan 1',
1: 'Viola Walter 2',
2: 'Christopher Lyl',
3: 'Stephan Said',
4: 'Sion X.',
5: 'Martin Grey'},
'Class': {0: '22', 1: '43', 2: '-2', 3: '1', 4: '0', 5: '1'},
'Age ': {0: None, 1: None, 2: '41', 3: '42', 4: '64', 5: '34'}})
您可以創建一個包含所有唯一名稱的集合并為其分配一個 ID。您可以對此進行列舉,也可以為每個名稱分配亂數或哈希等,并保存該字典以供將來參考。
name2id = {name:i 1 for i, name in enumerate(set(df1.Customer.to_list() df2.Customer.to_list()))}
df1['Customer'] = df1['Customer'].map(name2id)
df1['Relative'] = df1['Relative'].map(name2id)
df2['Customer'] = df2['Customer'].map(name2id)
輸出:
# df1:
Customer Relative Age Note
0 1 4 22 none
1 1 2 22 none
2 4 7 43 xxx
3 5 3 64 none
# df2:
Customer Class Age
0 6 22 None
1 8 43 None
2 2 -2 41
3 7 1 42
4 5 0 64
5 3 1 34
uj5u.com熱心網友回復:
我認為這應該可行,您可以創建一個字典來為每個客戶分配唯一的標識號,然后,在您需要的任何資料框中,您只需提取該客戶 ID。
customersid = dict(zip(range(1, df['Customer'].unique().count() 1), df['Customer'].unique()))
df['Customer ID'] = customersid.get(df['Customer'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435568.html
