python題求助
1.對“作業-原始成績.xlsx”檔案中的昵稱進行處理,將以sdufe開頭的昵稱中,sdufe后面的11位學號以及學號后面的姓名提取出來,以及測驗、討論、成績三項資料轉換成數值,“-”轉換成“0”,寫到“匯出成績.xlsx”檔案中。運行結果如下:

原始成績表為

2.給定“電影導演演員.xlsx”檔案,統計每個演員參演的電影串列,寫入excel檔案“演員參演電影.xlsx”,運行結果為:

給定的檔案表格為
uj5u.com熱心網友回復:
匯入xlrd庫,對excel逐行讀取,再簡單判斷應該就行了吧uj5u.com熱心網友回復:
import pandas as pd
df = pd.read_excel(r"c:\作業-原始成績.xlsx")
dfwhere = df[df['學生昵稱'].str[:5] == 'sdufe']
df_code = dfwhere['學生昵稱'].str[5:16]
df_name = dfwhere['學生昵稱'].str[16:]
df_test = dfwhere['測驗']
df_discuss = dfwhere['討論'].replace("-", '0')
df_grade = dfwhere['成績']
dfnew = pd.DataFrame(list(zip(df_code, df_name, df_test, df_discuss, df_grade)), columns=['學號', '姓名', '測驗', '討論', '成績'])
dfnew.to_excel(r"c:\匯出成績.xlsx", index=False)
df = pd.read_excel(r"c:\電影導演演員.xlsx")
d = {}
for index, row in df.iterrows():
actor, movie = row['演員'], row['電影名稱']
for n in actor.split(','):
if d.get(n, 'f') == 'f':
d[n] = movie
else:
if movie not in d[n]:
d[n] += "," + movie
dg = pd.DataFrame( [(k, v) for k, v in d.items()], columns=['演員', '電影'])
dg.to_excel(r"c:\演員參演電影.xlsx", index=False)
uj5u.com熱心網友回復:
如果第三方庫用的是openpyxl,應該怎么寫呢
uj5u.com熱心網友回復:
上面也沒有用到openpyxl呀,直接用pandas就解決了uj5u.com熱心網友回復:
因為老師留的作業要求讓我們用openpyxl庫寫代碼

uj5u.com熱心網友回復:
給你寫一個例子,自己照葫蘆畫票寫第二個:import openpyxl as oxl
wb = oxl.load_workbook(r"c:\作業-原始成績.xlsx")
sheet = wb.active
wbn = oxl.Workbook()
sheetn = wbn.active
sheetn.append(['學號', '姓名', '測驗', '討論', '成績'])
for i in sheet.rows:
v = i[0].value
if v[:5] == 'sdufe':
l = [v[5:16], v[16:], i[4].value, str(i[5].value).replace("-", '0'), i[6].value]
sheetn.append(l)
wbn.save(r"c:\匯出成績.xlsx")
uj5u.com熱心網友回復:
請問這個代碼哪里錯了??
import openpyxl
from openpyxl import Workbook
def getActors(filename):
actors=dict() wb=openpyxl.load_workbook(filename) ws=wb.worksheets[0]
for index,row in enumerate(ws.rows):
if index==0:
continue filmName,actor=row[0].value,row[2].value.split(",") for a in actor:
actors[a]=actors.get(a,set()) actors[a].add(filmName)
return actors
actors=getActors('電影導演演員.xlsx')
actors=sorted(actors.items(),key=lambda x:int(x[0][2:]))
for item in actors:
print(item)
uj5u.com熱心網友回復:
做出來了嗎,同求
uj5u.com熱心網友回復:
感覺這個帖子很久了呢,建議學會貼代碼轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/46697.html
上一篇:視頻合成介面
