Pandas 根据百分比重复检查?

Pandas duplicate check based on percentage?

我正在尝试清理 csv,但我想根据百分比查找重复项。 (比如:如果第 x 行中的 cellA 的 80% 与另一个单元格匹配,则丢弃)

我已经成功实现了“100% 重复删除”,但希望它根据指定的百分比删除(如果列 'text' 中的字段匹配,例如 70%,则删除行(除了第一场比赛)).

示例 table [resultsg_small.csv]:

id,created_at,text,author_id
1414572338742431746,2021-07-12T13:08:21.000Z,【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https://url.com/XrQSvPY7WL,1036548763584581633
1414569270579802121,2021-07-12T12:56:10.000Z,【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https://url.com/g2iGgVkUTN,927508165675040770
1414567867333361671,2021-07-12T12:50:35.000Z,【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https://url.com/tjeKZLoK44,2523470906
421368378653085698,2021-07-31T07:13:23.000Z,マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https://url.com/RgiwRkzZtM,1266546608373522435
1421366704014303232,2021-07-31T07:06:44.000Z,マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) (ハフィントンポスト)\nMINIATURE LIFE by Tatsuya Tanaka -July 23rd 2021-コロナ禍の五輪をマスクで表現したアート作品史上初のコロナ禍で開催される東京オリンピック…\nhttps://url.com/dRuB6Dttli\n#速報 #ニュース https://url.com/ke2fjFxW2L,839848894670356480
1421365716712833024,2021-07-31T07:02:49.000Z,マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https://url.com/5zGsZRYQd4,874145167250345984

MWE:

import csv
import re
import pandas as pd

df = pd.read_csv('data/resultsg_small.csv')
df = df[['id','created_at','text','author_id']]
df.drop_duplicates(subset ="text",keep = 'first', inplace = True)

df.to_csv('new.csv')

您可以执行以下操作。浏览您感兴趣的列并创建一个匹配分数列(此处 match_percent),然后删除任何高于您选择设置的阈值的内容

import pandas as pd
from fuzzywuzzy import process

df = pd.read_csv('nippon.csv')

df2 = pd.DataFrame([process.extract(df['text'][i], df[~df.index.isin([i])]['text'], limit=1)[0] for i in range(len(df))],
                   index=df.index, columns=['match_text', 'match_percent', 'match_index'])

final = df.join(df2)
final

哪个returns:

 id                created_at  \
0  1414572338742431746  2021-07-12T13:08:21.000Z   
1  1414569270579802121  2021-07-12T12:56:10.000Z   
2  1414567867333361671  2021-07-12T12:50:35.000Z   
3   421368378653085698  2021-07-31T07:13:23.000Z   
4  1421366704014303232  2021-07-31T07:06:44.000Z   
5  1421365716712833024  2021-07-31T07:02:49.000Z   

                                                text            author_id  \
0  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...  1036548763584581633   
1  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...   927508165675040770   
2  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...           2523470906   
3  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https:...  1266546608373522435   
4  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) (ハフィント...   839848894670356480   
5  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https:...   874145167250345984   

                                          match_text  match_percent  \
0  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...             86   
1  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...             86   
2  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...             86   
3  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) (ハフィント...             86   
4  【コロナ禍オリンピック】深夜0時の渋谷センター街、ヤバい…マジで東京が酷すぎる… https...             86   
5  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https:...             88   

   match_index  
0            1  
1            0  
2            0  
3            4  
4            0  
5            3  

并对其进行过滤:

final_over_87 = final[final['match_percent']>=87]

returns:

id                created_at  \
5  1421365716712833024  2021-07-31T07:02:49.000Z   

                                                text           author_id  \
5  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https:...  874145167250345984   

                                          match_text  match_percent  \
5  マスクがプールや陸上トラックに変身。コロナ禍オリンピックをアートで体現(画像) https:...             88   

   match_index  
5            3  
​