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



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 中执行大量冗余查找,如果数据集的大小很大,则可能无法很好地缩放。

相关内容

  • 没有找到相关文章

最新更新