Erf*_*fan 2 hash anonymize pandas
通常我通过使用 hashlib 和使用 .apply(hash) 函数来匿名化我的数据。
现在我正在尝试一种新方法,想象一下我必须遵循名为“数据”的 df:
df = pd.DataFrame({'contributor':['eric', 'frank', 'john', 'frank', 'barbara'],
'amount payed':[10,28,49,77,31]})
contributor amount payed
0 eric 10
1 frank 28
2 john 49
3 frank 77
4 barbara 31
Run Code Online (Sandbox Code Playgroud)
我想通过转动名称全部变成匿名化person1,person2等等,是这样的:
output = pd.DataFrame({'contributor':['person1', 'person2', 'person3', 'person2', 'person4'],
'amount payed':[10,28,49,77,31]})
contributor amount payed
0 person1 10
1 person2 28
2 person3 49
3 person2 77
4 person4 31
Run Code Online (Sandbox Code Playgroud)
所以我的第一个虽然是总结name列,以便名称附加到唯一索引,我可以使用该索引作为“person”之后的数字。
我认为更快的解决方案是factorize用于唯一值,添加1,转换为Series和strings 并添加Person字符串:
df['contributor'] = 'Person' + pd.Series(pd.factorize(df['contributor'])[0] + 1).astype(str)
print (df)
contributor amount payed
0 Person1 10
1 Person2 28
2 Person3 49
3 Person2 77
4 Person4 31
Run Code Online (Sandbox Code Playgroud)