如何用星号(“ *”)替换csv文件列中的非重复值?

问题描述 投票:1回答:1

我需要将the raw table匿名化为anonymized table。换句话说,我需要将非重复的集合替换为星号。

实际上,我已经运行了这段代码:

    for j in range(len(zz_new)):
        for i in range(len(zz)):
            if zz_new.iloc[j][0] != zz.iloc[i][0]:
                zz_new.iat[j,0]="*"

            if zz_new.iloc[j][1] != zz.iloc[i][1]:
                zz_new.iat[j,1]="*"

            if zz_new.iloc[j][2] != zz.iloc[i][2]:
                zz_new.iat[j,2]="*"

            if zz_new.iloc[j][3] != zz.iloc[i][3]:
                zz_new.iat[j,3]="*"

            if zz_new.iloc[j][4] != zz.iloc[i][4]:
                zz_new.iat[j,4]="*"

,但结果是这样的My anonymized table。我想知道您是否可以帮助我达到anonymized table

python pandas jupyter anonymity
1个回答
0
投票

您需要做的是遍历每一行,找出哪些行重复。有很多方法可以做到,但是蛮力算法看起来像这样:

  • 启动一个跟踪non_duplicate_id的空列表
  • 在每一行上重复,并检查是否有一行与该当前元素完全相似。
  • 如果有一个完全相似的元素,则不执行任何操作,如果将该行的ID添加到non_duplicate_id列表。
  • 遍历您的non_duplicate_id列表,并将每一行设置为两个感兴趣的领域(年龄和教育程度)的星号
  • 保存新的匿名表

但是,此解决方案在第2步和第3步进行了大量冗余查找,如果数据集很大,可能无法很好地扩展。

© www.soinside.com 2019 - 2024. All rights reserved.