投票制删除重复项并保留唯一项
表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: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')
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) kylin121380 发表于 2020-10-9 13:18
你好,我想请问一下,如果成绩不止“优”、“良”两种等级,可能有多个等级,如何在多个等级中寻找出现最多的并且输出最终成绩 我才是小宝啊 发表于 2020-10-9 13:47
你好,我想请问一下,如果成绩不止“优”、“良”两种等级,可能有多个等级,如何在多个等级中寻找出现最 ...
用数据透视。某些sql带了这个功能(PIVOT)可以直接搞
话说楼上几个怎么知道你这个是xls的数据还是db的数据{:10_289:}
没玩过pandas 应该也行
页:
[1]