wp231957 发表于 2024-10-21 14:39:08

pandas求解

已知:
      序号         姓名         信息
   1         张三         学生
   2         张三      河北人
   3         张三      会唱歌
   4         李四         学生
   5         李四      山东人
   6         李四      会游泳
   7         王五         教师
   8         王五      山东人
   9         王五      会游泳
   10         赵六      河北人
   11         赵六      会游泳
   12         赵六         教师
   13         关羽         学生
   14         关羽      山东人
   15         关羽      会唱歌
   16         刘备         教师
   17         刘备      南京人
   18         刘备      会砍柴
求解,任意二人之间 有几项信息是重复的

FishC 发表于 2024-10-21 14:39:20

要解决这个问题,可以使用以下步骤:

1. **导入所需库**:确保你安装并导入了pandas库。
2. **创建DataFrame**:根据提供的数据创建一个pandas DataFrame。
3. **构建一个组合**:计算所有可能的两人组合。
4. **计算重复信息量**:比较每对组合的"信息"列之间的交集。

下面是示例代码:

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 == name1]['信息'])
    info2 = set(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} 项信息是重复的")

这段代码使用了组合生成所有姓名之间的配对,并计算出每对配对之间的共同信息数量。你可以根据打印的结果查看任意两人之间有多少信息是重复的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: pandas求解