import pandas as pd
from itertools import combinations
# 创建数据
data = {
"序号": list(range(1, 19)),
"姓名": ["张三", "张三", "张三", "李四", "李四", "李四",
"王五", "王五", "王五", "赵六", "赵六", "赵六",
"关羽", "关羽", "关羽", "刘备", "刘备", "刘备"],
"信息": ["学生", "河北人", "会唱歌", "学生", "山东人", "会游泳",
"教师", "山东人", "会游泳", "河北人", "会游泳", "教师",
"学生", "山东人", "会唱歌", "教师", "南京人", "会砍柴"]
}
# 创建 DataFrame
df = pd.DataFrame(data)
# 获取所有唯一的人名
names = df['姓名'].unique()
# 保存重复信息的结果
results = []
# 计算每对人的重复信息
for (name1, name2) in combinations(names, 2):
info1 = set(df[df['姓名'] == name1]['信息'])
info2 = set(df[df['姓名'] == name2]['信息'])
common_info = info1.intersection(info2)
results.append((name1, name2, len(common_info)))
# 输出每对人之间共同的信息数量
for name1, name2, count in results:
print(f"{name1} 和 {name2} 之间有 {count} 项信息是重复的")