import pandas as pd
one_day_pe=pd.read_csv('files/yieldbydate.csv',encoding='cp950',header=1)
pe_data=[]
sum_pe=float(0)
#標題無法對齊 造成key error
for i in one_day_pe['本益比']:
sum_pe=float(sum_pe)+float(one_day_pe[i])
pe_data.append({
'stockNo':str(one_day_pe['證券代號'][i]),
'peratio':one_day_pe[i]
})
我還試過二種方法 one_day_pe:(把header-1拿掉就可以這樣)ㄧ樣key error
with open('files/yieldbydate.csv',encoding='cp950') as file:
one_day_pe=csv.reader(file)
然後要存取時會出現io error 看網路是file already close.
!
讀進來的csv長這樣
[https://ithelp.ithome.com.tw/upload/images/20230208/20156023NqU02L8WIq.png]
謝謝大家
Dears,
首先,先重新排版一下您的Code...
不排版真的看不懂你的問題...
import pandas as pd
one_day_pe=pd.read_csv('files/yieldbydate.csv',encoding='cp950',header=1)
pe_data=[]
sum_pe=float(0)
#標題無法對齊 造成key error
for i in one_day_pe['本益比']:
sum_pe=float(sum_pe)+float(one_day_pe[i])
pe_data.append({
'stockNo':str(one_day_pe['證券代號'][i]),
'peratio':one_day_pe[i]})
從以上可以看的出來是你的迴圈的部分寫錯了,跟表頭標題無關。
以下我大致釐清理解後幫你重新撰寫一下你的Code。
import pandas as pd
one_day_pe = pd.read_csv('files/yieldbydate.csv', encoding = 'cp950', header = 1)
pe_data, sum_pe = {"stockNo" : [], "peratio":[]}, 0.0
for i in range(list(len(one_day_pe['本益比']))):
sum_pe += float(list(one_day_pe["本益比"])[i])
pe_data["stockNo"].append(list(one_day_pe["證券代號"])[i])
pe_data["peratio"].append(list(one_day_pe["本益比"])[i])
pe_data = pd.DataFrame(pe_data)
有問題再提出來吧,謝謝。