我有一些数据已经读进字典词典
编辑:发布原始数据格式
原始数据是每个用户每个月一个的excel文件
Alpha-2018年1月..以下格式
Score
English 70
Social Science 80
Maths 90
History 45
Science 50
我将所有这些优点读入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数据,而在工作表2的数学数据和第三次科学数据中则仅发布该数据。对于某人而言,无论哪个月份缺失数据,都应将其留空或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')
我也尝试使用以下解决方案,但没有帮助:
答案 0 :(得分:0)
我尝试following code将字典转换为数据框,这很有帮助
df1=pd.DataFrame(list1).stack().apply(pd.Series).unstack()
它将以以下格式在单个工作表上提供数据:
Jan-2018 feb-2018 mar-2018 april-2018
Eng Alpha 70 75 60 0
Beta 30 55 0 50
Gamma 50 55 0 56
Math Alpha 90 85 92 0
Beta 50 45 0 52
Gamma 50 75 0 59