我才是小宝啊 发表于 2020-10-9 12:39:04

投票制删除重复项并保留唯一项

表1:
teacher        student        math        English
A                张三        优        优
B                张三        优        良
C                张三        良        良
A                李四        优        优
B                李四        良        优
由A、B、C三位老师其中两位或者三位给学生打分,最后输出学生的最终成绩。
得票最多的为该科目最终成绩,当“优”、“良”一样多时输出false。
例:张三math“优”获得两次,“良”获得一次,因此张三math最终成绩为“优”
      李四math“优”获得一次,“良”获得一次,因此李四math最终成绩为“false”

最终输出结果:
student          math   English
张三                   优        良
李四                FALSE        优

求大佬帮忙!!!

kylin121380 发表于 2020-10-9 13:18:35

本帖最后由 kylin121380 于 2020-10-9 13:20 编辑

import pandas as pd


df = pd.read_excel('1.xls')
df = df.groupby('student').sum()
del df['teacher']
for i in df.index:
    for j in df.columns:
      df.loc = '优' if df.loc.count('优') > df.loc.count('良') else '良' if df.loc.count('优') < df.loc.count('良') else 'False'
df.to_excel('2.xls')


疾风怪盗 发表于 2020-10-9 13:34:14

import pandas as pd

a = pd.DataFrame([['A', '张三', '优', '优'],
                  ['B', '张三', '优', '良'],
                  ['C', '张三', '良', '良'],
                  ['A', '李四', '优', '优'],
                  ['B', '李四', '良', '优']],
               columns=['teacher', 'student', 'math', 'English'])
print(a)
result = pd.DataFrame(data=None, index=['张三', '李四'], columns=['math', 'English'])

for j in ['math', 'English']:
    b = pd.pivot_table(data=a, values=['teacher'], index=['student'], columns=, aggfunc='count')
    b.columns = ['优', '良']
    for i in b.index:
      if b.loc > 1:
            result.loc = '优'
      elif b.loc > 1:
            result.loc = '良'
      elif b.loc == b.loc:
            result.loc = 'FLASE'
print(result)

我才是小宝啊 发表于 2020-10-9 13:47:38

kylin121380 发表于 2020-10-9 13:18


你好,我想请问一下,如果成绩不止“优”、“良”两种等级,可能有多个等级,如何在多个等级中寻找出现最多的并且输出最终成绩

kogawananari 发表于 2020-10-9 14:24:12

我才是小宝啊 发表于 2020-10-9 13:47
你好,我想请问一下,如果成绩不止“优”、“良”两种等级,可能有多个等级,如何在多个等级中寻找出现最 ...

用数据透视。某些sql带了这个功能(PIVOT)可以直接搞
话说楼上几个怎么知道你这个是xls的数据还是db的数据{:10_289:}
没玩过pandas 应该也行
页: [1]
查看完整版本: 投票制删除重复项并保留唯一项