在删除DataFrame中相似的配对值时,可以使用以下步骤:
- 导入必要的库和模块:import pandas as pd
from fuzzywuzzy import fuzz
from itertools import combinations
- 创建一个DataFrame:data = {'Name': ['John', 'Amy', 'Mike', 'David', 'Emily'],
'Age': [25, 28, 30, 27, 26],
'City': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney']}
df = pd.DataFrame(data)
- 定义一个函数来计算两个字符串的相似度:def calculate_similarity(str1, str2):
return fuzz.ratio(str1.lower(), str2.lower())
- 创建一个空列表来存储相似的配对值的索引:similar_pairs = []
- 使用组合函数来获取所有可能的配对:combinations = combinations(df.index, 2)
- 遍历所有配对,并计算它们的相似度:for pair in combinations:
index1, index2 = pair
name1 = df.loc[index1, 'Name']
name2 = df.loc[index2, 'Name']
similarity = calculate_similarity(name1, name2)
if similarity >= 80: # 设置相似度的阈值
similar_pairs.append(pair)
- 删除相似的配对值:for pair in similar_pairs:
index1, index2 = pair
df = df.drop([index2])
最终,DataFrame中相似的配对值将被删除。请注意,这里使用了fuzzywuzzy库来计算字符串的相似度,可以根据实际情况调整相似度的阈值。