在Python中跨多个表对数据进行匿名化,并在匿名化后保持相关列之间的关系?

问题描述 投票:0回答:1
我正在开发一个项目,其中有两个独立的 csv 文件,这些文件是我从数据库中提取的。我想使用 pandas 在 python 中加载数据,并对两个表中某些列的内容进行匿名化。其中一些包含将被匿名化的数据的列已存在于也应被匿名化的其他表之一中。但我希望他们对同一件事匿名。

有没有办法保持匿名后的关系?即位于不同列中的两个表中的数据被匿名化为相同的东西?

我在网上看到了很多例子,但仅限于匿名化单个表。如何对两个表执行此操作并保持列之间的关系,以便它们匿名为同一事物,如下例所示?

示例:

两个表、两列都预先匿名化,但表 1 中的 colA 与表 2 中的 colC 相关。

预匿名化:

表1

colAcolB123456abcdefg789123hijklm

表2:

colC冷123456xyz123789123abc456

匿名发布:

表1

colAcolB912056zxcvbn450912poiuyt

表2:

colC冷912056qwe098450912asd321
python pandas datatables anonymous-types scramble
1个回答
0
投票
您需要先设置一个用于替换的字典。如果您将使用它来更改所有表中的值,您将保持关系:

import pandas as pd import random df = pd.DataFrame({'ID': [1,1,2,3], 'value': ['sdfsdfs', 'fhgdhds', 'rgeerfdg', 'regfdd']}) # create dictionary to replace ID column with IDs = df['ID'].unique() anon = {} for ID in IDs: annon[ID] = random.randint(111111,999999) df.replace({'ID': anon}, inplace=True) df ID value 0 373005 sdfsdfs 1 373005 fhgdhds 2 152871 rgeerfdg 3 934125 regfdd
    
© www.soinside.com 2019 - 2024. All rights reserved.