class Tongbao: def __init__(self,sortname,money,percent): self.danwei = "单位" self.file_name = Load.read_excel("./a站点通报.xlsx", "py通报") self.sortname = sortname self.money = money self.percent = percent def paiming(self,unit): b = [1,2,3,8,9,10] self.danwei = [] Money = [] Precent = [] for i in b: self.danwei.append(self.file_name.loc[self.file_name[self.sortname] == i, self.danwei].values) Money.append(self.file_name.loc[self.file_name[self.sortname] == i, self.money].values) Precent.append(self.file_name.loc[self.file_name[self.sortname] == i, self.percent].values) # print(top_3['单位'][0]) res = f"{self.danwei[0][0]}({round(Money[0][0],2)}{unit},完成{round(Precent[0][0]*100,2)}%),{self.danwei[1][0]}({round(Money[1][0],2)}{unit},完成{round(Precent[1][0]*100,2)}%),{self.danwei[2][0]}({round(Money[2][0],2)}{unit},完成{round(Precent[2][0]*100,2)}%)" res1 = f"{self.danwei[3][0]}({round(Money[3][0],2)}{unit},完成{round(Precent[3][0]*100,2)}%),{self.danwei[4][0]}({round(Money[4][0],2)}{unit},完成{round(Precent[4][0]*100,2)}%),{self.danwei[5][0]}({round(Money[5][0],2)}{unit},完成{round(Precent[5][0]*100,2)}%)" return res,res1 xundian_res,xundian_res1 = Tongbao(sortname="巡店排名",money = "当月巡店2次以上的站点数",percent = "当月巡店率").paiming("个") res_jidi,res_jidi1 = Tongbao(sortname="寄递排名",money = "寄递叠加累计",percent = "寄递叠加完成率").paiming("个") res_jinrong,res_jinrong1 = Tongbao(sortname="金融排名",money = "叠加金融累计",percent = "金融叠加完成率").paiming("个") res_youzhi,res_youzhi1 = Tongbao(sortname="站点排名",money = "已优质站点完成",percent = "优质站点完成率").paiming("个") 代码报错Index data must be 1-dimensional
时间: 2024-01-30 18:02:36 浏览: 133
这个错误的原因是在使用 Pandas 库中的 loc 方法时,返回的是一个 DataFrame 对象而不是一个一维数组。在这里,你可以使用 .values.tolist() 方法将 DataFrame 转换为列表,然后再取出其中的元素。修改代码如下:
```python
class Tongbao:
def __init__(self,sortname,money,percent):
self.danwei = "单位"
self.file_name = Load.read_excel("./a站点通报.xlsx", "py通报")
self.sortname = sortname
self.money = money
self.percent = percent
def paiming(self,unit):
b = [1,2,3,8,9,10]
self.danwei = []
Money = []
Precent = []
for i in b:
self.danwei.append(self.file_name.loc[self.file_name[self.sortname] == i, self.danwei].values.tolist()[0])
Money.append(self.file_name.loc[self.file_name[self.sortname] == i, self.money].values.tolist()[0])
Precent.append(self.file_name.loc[self.file_name[self.sortname] == i, self.percent].values.tolist()[0])
res = f"{self.danwei[0]}({round(Money[0],2)}{unit},完成{round(Precent[0]*100,2)}%),{self.danwei[1]}({round(Money[1],2)}{unit},完成{round(Precent[1]*100,2)}%),{self.danwei[2]}({round(Money[2],2)}{unit},完成{round(Precent[2]*100,2)}%)"
res1 = f"{self.danwei[3]}({round(Money[3],2)}{unit},完成{round(Precent[3]*100,2)}%),{self.danwei[4]}({round(Money[4],2)}{unit},完成{round(Precent[4]*100,2)}%),{self.danwei[5]}({round(Money[5],2)}{unit},完成{round(Precent[5]*100,2)}%)"
return res, res1
xundian_res, xundian_res1 = Tongbao(sortname="巡店排名", money="当月巡店2次以上的站点数", percent="当月巡店率").paiming("个")
res_jidi, res_jidi1 = Tongbao(sortname="寄递排名", money="寄递叠加累计", percent="寄递叠加完成率").paiming("个")
res_jinrong, res_jinrong1 = Tongbao(sortname="金融排名", money="叠加金融累计", percent="金融叠加完成率").paiming("个")
res_youzhi, res_youzhi1 = Tongbao(sortname="站点排名", money="已优质站点完成", percent="优质站点完成率").paiming("个")
```
希望这能解决你的问题。
阅读全文