【发布时间】:2019-03-31 23:23:54
【问题描述】:
我有一些数据已读入字典词典
编辑:发布原始数据格式
原始数据是每个用户每个月一个excel文件
Alpha - 2018 年 1 月 .. 以下格式
Score
English 70
Social Science 80
Maths 90
History 45
Science 50
我将所有这些 excel 读入 python 并将它们放入字典中,如下所述。有些学生可能会错过一些考试,因此在这几个月里他们的数据将会丢失。因此,对于少数学生来说,变化将是完整的月份数据缺失。
{alpha: {u'Jan-2018': {'Eng': '70', 'math': '90', 'sci': '50'}, u'feb-2018': {'Eng': '75', 'math': '85', 'sci': '60'}, u'mar-2018': {'Eng': '60', 'math': '92', 'sci': '40'}}
{beta : {u'Jan-2018': {'Eng': '30', 'math': '50', 'sci': '40'}, u'feb-2018': {'Eng': '55', 'math': '45', 'sci': '70'}, u'may-2018': {'Eng': '50', 'math': '52', 'sci': '45'}}
{gamma : {u'Jan-2018': {'Eng': '50', 'math': '50', 'sci': '40'}, u'feb-2018': {'Eng': '55', 'math': '75', 'sci': '40'}, u'may-2018': {'Eng': '56', 'math': '59', 'sci': '35'}}
我想在 Excel 上以下列格式获取这些内容。在表格 1 上,它应该只发布不同月份的 Eng 数据,在第二张表格上发布数学数据和第三张 sci 数据。对于某人数据丢失的任何月份,应该留空或可能为 0
Sheet1(Eng):
Jan-2018 Feb-2018 Mar-2018 May-2018
alpha 70 75 60 0
beta 30 55 0 50
gamma 50 55 0 56
其他两张类似。
我试过下面的代码,但是有两个问题:
- 不考虑缺失月份,按顺序打印
-
它不会在每一列的顶部打印月份名称
List1 包含上述字典的字典
alleng = {} allmath = {} allsci = {} for i in list1: englist = [] mathlist = [] scilist = [] for m in list1[i]: for h in list1[i][m]: value1 = list1[i][m][h] if h == 'Eng': englist.append(value1) if h == 'Math': mathlist.append(value1) if h == 'Sci': scilist.append(value1) alleng[i] = englist allmath[i] = mathlist allsci[i] = scilist writer = ExcelWriter('final-sheet.xlsx') frame = pd.DataFrame.from_dict(allsci, orient='index') frame = frame.transpose() frame = frame.transpose() frame.to_excel(writer , sheet_name = 'Sci') frame1 = pd.DataFrame.from_dict(alleng, orient='index') frame1 = frame1.transpose() frame1 = frame1.transpose() frame1.to_excel(writer , sheet_name = 'Eng') frame2 = pd.DataFrame.from_dict(allmath, orient='index') frame2 = frame2.transpose() frame2 = frame2.transpose() frame2.to_excel(writer , sheet_name = 'Math')
我也尝试使用以下解决方案,但没有帮助:
【问题讨论】:
-
我对数据的原始来源更感兴趣,它是什么样的,以及你为什么要分这么多步骤来做这件事。可能有比转换为字典然后转换回 Excel 更好的方法来处理这个问题。数据的来源是什么?您还提到缺少月份等;如果样本数据更能代表此数据集中可能发生的变化,则它可能会更有帮助。
-
我每个月都会为 alpha、beta 和 gamma 等用户获得多张 Excel 表格。我从这些excel中读取他们的数据并转换为字典(list1)。然后必须明智地对这个数据主体进行分类,这就是我苦苦挣扎的地方。我粘贴的代码 sn-p 肯定是更长的路,应该有一些东西是 Pandas 转换为所需格式的数据帧。在其中一个解决方案上发现了这一点,但是它本身在一张纸上提供了所有内容,尽管它按行对数据进行排序 --- pd.concat({k: pd.DataFrame(v) for k, v in list1.items() })
标签: excel python-2.7