everyone.我需要匿名化原始表以制作匿名表。换句话说,我需要用星星替换non_重复的集合。
实际上,我已经运行了以下代码:
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]="*"
,但结果是这样的 我的匿名表。我想知道您是否可以帮助我到达匿名表。
使用 value_counts(( 方法:
df
age education
0 30-39 HS-grad
1 40-49 Bachelors
2 30-39 HS-grad
3 30-39 11th
vcnt= df.education.value_counts().eq(1)
HS-grad False
Bachelors True
11th True
Name: education, dtype: bool
df["education"]= df.education.replace(vcnt.loc[vcnt].index,"*")
age education
0 30-39 HS-grad
1 40-49 *
2 30-39 HS-grad
3 30-39 *
您需要做的是遍历每一行并找出哪些行是重复的。有很多方法可以做到这一点,但蛮力算法看起来像这样:
- 启动一个跟踪non_duplicate_id的空列表
- 遍历每一行,并检查是否有一行与此当前元素完全相同。
- 如果是,则有一个完全相同的元素,则不执行任何操作,如果没有,则将此行的 id 添加到 non_duplicate_id列表。
- 循环访问您的non_duplicate_id列表,并将每一行设置为针对两个感兴趣的领域(年龄和教育(加星标
- 保存新的匿名表
但是,此解决方案在步骤 2 和 3 中执行大量冗余查找,如果数据集的大小很大,则可能无法很好地缩放。