lzymm1 发表于 2021-2-17 18:56:21

【Pandas】这一段代码为什么会报错?

import pandas as pd

#识别登分表中含有的科目
data = pd.read_excel(r'D:\Desktop\登分表.xls')
columns = list(data.columns)
subjects_list = ['语文','数学','英语','日语','外语','物理','化学','地理','生物','政治','历史']
subjects =

#新增已有科目的单科排名sheet
with pd.ExcelWriter(r'D:\Desktop\成绩统计.xls') as writer:
    data.to_excel(writer, sheet_name='所有科目')
    Personal_Information = columns.index(subjects)-1
    for i in subjects:
      rank = i +'单科排名'
      single_subject_ranking = data.loc[:,i]
      single_subject_ranking.sort_values(rank,inplace = True)
      single_subject_ranking.to_excel(writer,sheet = rank)

sequence = []
for i in subjects:
    data = data.rank(method='min', ascending=False)
    sequence.append(i,i+'排名')
data['三科总分'] = data['语文'] + data['数学'] + data['英语']
data['三科总分排名'] = data['三科总分'].rank(method = 'min',ascending = False)
data = data.loc.sum(axis=1)
data = data.rank(method = 'min',ascending = False)
data.sort_values(by= range(subjects) + "科总分名次", inplace=True)

如上

来自星星的小明 发表于 2021-2-17 18:56:22

本帖最后由 来自星星的小明 于 2021-2-18 14:46 编辑

rank = i +'单科排名'
single_subject_ranking.sort_values(rank,inplace = True)
rank 是你自己新定义的字段,原数据并不存在这一列,不能根据rank字段排序

sort_values()
by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名";
single_subject_ranking = data.loc[:,i]
这句代码只是拿到了这个DataFrame中的数据,没有表头,是根据表头的字段对应的列进行排序的

qq1151985918 发表于 2021-2-17 19:00:43

本帖最后由 qq1151985918 于 2021-2-17 19:02 编辑

报错信息是什么

第15行是不是多一个逗号?

lzymm1 发表于 2021-2-17 19:08:52

qq1151985918 发表于 2021-2-17 19:00
报错信息是什么

第15行是不是多一个逗号?

第16行报错,ValueError: No axis named 语文单科排名 for object type Series

wp231957 发表于 2021-2-18 09:01:53

lzymm1 发表于 2021-2-17 19:08
第16行报错,ValueError: No axis named 语文单科排名 for object type Series

除非你把execel表发出来

lzymm1 发表于 2021-2-18 13:13:00

wp231957 发表于 2021-2-18 09:01
除非你把execel表发出来

怎么发

lzymm1 发表于 2021-2-18 13:14:47

wp231957 发表于 2021-2-18 09:01
除非你把execel表发出来


考号班别姓名语文数学英语物理化学生物政治历史地理
11刘6913028999087464688
21陈9211374.5855662575157
31黎9310762628288675929
41张94110118.5427278777133
51曾1028945.5598085644468
61赖8310073766881776465
71李8410573.5655273644151
81王7411834699088455351
91范8695100616241663729
101张825985433458686641
111曹849889.5656073575750
121林8159105567674645161
131王12010259.5405849693738
141植869452555255656754
151容956793353432623534
161梁886367.5516268513247
171袁8210655.5555272465761
181黎943467454047525245
191林967363.5464766597158
201叶1018468515863634140


lzymm1 发表于 2021-2-18 13:15:27

wp231957 发表于 2021-2-18 09:01
除非你把execel表发出来

大概就是这样的

lzymm1 发表于 2021-2-18 13:33:22

wp231957 发表于 2021-2-18 09:01
除非你把execel表发出来

第十六行是(by = rank,inplace = True)的话,就会说:
TypeError: sort_values() got an unexpected keyword argument'by'

lzymm1 发表于 2021-2-18 13:33:51

qq1151985918 发表于 2021-2-17 19:00
报错信息是什么

第15行是不是多一个逗号?

第十六行是(by = rank,inplace = True)的话,就会说:
TypeError: sort_values() got an unexpected keyword argument'by'

lzymm1 发表于 2021-2-18 14:53:47

来自星星的小明 发表于 2021-2-17 18:56
rank = i +'单科排名'
single_subject_ranking.sort_values(rank,inplace = True)
rank 是你自己新定义的 ...

谢谢,悟了
页: [1]
查看完整版本: 【Pandas】这一段代码为什么会报错?