问题是这样的:“我们导出了豆瓣电影排名的 top250,现要统计不同导演所导演的电影在榜单中的数量,按照导演的电影数量排序,将导演的电影数量大于等于 3 的导演以及其导演的电影,使用 print 函数输出到屏幕。要求格式化对齐输出。”
问题相关代码
import pandas as pd
df=pd.read_excel('豆瓣电影排行榜.xlsx')#导入数据
lis1=df['导演'].drop_duplicates().values.tolist()#取出导演存入列表
lis2=df['影名'].drop_duplicates().values.tolist()#取出影名存入列表
lis=[]
lis4=[]
#按导演分类,对导演字段进行计数,存为字典
df_count=dict(df.groupby('导演',)['导演'].count())
#取出计数后的导演和影名分别存入列表
dr=list(df_count.keys())
dn=list(df_count.values())
n=len(df_count)#175
#将电影数大于等于3的导演和影名存入新列表L
for i in range(n):
lis4.append([lis1[i],lis2[i]])
if dn[i]>=3:lis.append([dr[i],dn[i]])
#对新列表L按电影数降序排序
L=sorted(lis,key=lambda x:(x[1]),reverse=True)
#把列表转为字典,便于之后存入每个导演对应的电影
dic=dict(L)
#建立一个与L长度相同的列表,用于存电影
movie=[i for i in range(len(L))]
#尝试把每个电影数大于等于3的导演导的电影存入字典的值里
for keys in dic:
for i in range(n):for j in range(len(L)): if lis4[i][0]==L[j][0]: movie[j]+=lis4[i][1]
运行结果及报错内容
TypeError: unsupported operand type(s) for +=: 'int' and 'str'我的解答思路和尝试过的方法
我想使用“+=”方法把多部电影存入一个导演对应的value中,但是运行报错(如上)
我想要达到的结果
因为字典中的每个导演对应不止一部电影,但是在上面的for循环中我只能做到每个导演对应1部电影,其他的属于那个导演的电影没办法加入到对应的value中去,“+=”也没办法使用,没有头绪了数据和实验指导在这里
链接:https://pan.baidu.com/s/11Db8wYGhQNEj2zUV0mCkMw?pwd=1234
提取码:1234
希望哪位朋友可以给予解答 ^ 0 ^(有更简单的方法当然更好,个人感觉自己的办法比较麻烦,但是想不到其他办法>_<)