excel表中数据是这样的:
姓名 科目 分数
张三 语文 89
张三 数学 90
李四 数学 84
王五 英语 78
读完后的结果:dict= {'张三':{‘语文’:89,'数学':90},'李四':{'数学':84},'王五':{'英语':78}}
我原来是用openpyxl实现的,每一行逐一读取ABC3个列,然后用setdefault追加。但这个库跑起来太慢了,表格很大的时候(比如100万行),整个读完得半个小时。我了解到pandas和xlrd等库效率比较高,但不知道如何实现,向大家请教。
import pandas as pd
# 读入Excel文件
df = pd.read_excel("your_excel_file.xlsx")
# 创建一个空字典
result_dict = {}
# 在DataFrame对象上进行迭代
for index, row in df.iterrows():
# 从当前行获取姓名,科目和分数数据
name, subject, score = row["姓名"], row["科目"], row["分数"]
# 按需创建新字典
if name not in result_dict:
result_dict[name] = {}
# 在新字典中保存分数
result_dict[name][subject] = score
# 输出转换后的字典
print(result_dict)
不知道你这个问题是否已经解决, 如果还没有解决的话: