def decade_total_count(decade, name):
"""
sums up the number of births of the given
female baby `name` in a 10-year period
Parameters:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
decade ... starting year of the decade
name ... female name
... str
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""
count = 0
for i in range(decade, decade 10):
yearly = females[(females['name']==name) & (females['year']==i)]['births'].item()
count = count yearly
return count
我正在嘗試使用上面的函式來獲取資料中任何名稱的出生次數,但是只要有一年沒有出現該名稱,我的回圈就會停止。在這種情況下,我會收到此值錯誤:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/var/folders/yf/s14dt13x11n82t5kg4260v800000gn/T/ipykernel_4325/1603862037.py in <module>
----> 1 total_count('Jennifer')
/var/folders/yf/s14dt13x11n82t5kg4260v800000gn/T/ipykernel_4325/1143784105.py in total_count(name)
42
43 for i in range(start, end, 10):
---> 44 counts.append(decade_total_count(i, name))
45
46 return counts
/var/folders/yf/s14dt13x11n82t5kg4260v800000gn/T/ipykernel_4325/1143784105.py in decade_total_count(decade, name)
15
16 for i in range(decade, decade 10):
---> 17 yearly = females[(females['name']==name) & (females['year']==i)]['births'].item()
18 count = count yearly
19
~/Desktop/anaconda3/lib/python3.9/site-packages/pandas/core/base.py in item(self)
329 if len(self) == 1:
330 return next(iter(self))
--> 331 raise ValueError("can only convert an array of size 1 to a Python scalar")
332
333 @property
ValueError: can only convert an array of size 1 to a Python scalar
我怎樣才能繞過錯誤并讓我的回圈在我的資料中不包含給定“名稱”的情況下持續多年?我弄亂了try, except,else和finally子句,但不知何故,它打破了我的回圈,只回傳 0。
uj5u.com熱心網友回復:
抱歉,我沒有關于變數的足夠資訊female。
嘗試這個:
def decade_total_count(decade, name):
"""
sums up the number of births of the given
female baby `name` in a 10-year period
Parameters:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
decade ... starting year of the decade
name ... female name
... str
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""
count = 0
for i in range(decade, decade 10):
try:
yearly = females[(females['name']==name) & (females['year']==i)]['births'].item()
except ValueError:
continue
count = count yearly
return count
如果 aValueError被提出,只需抓住它并運行下一次迭代。
uj5u.com熱心網友回復:
你還沒有展示你嘗試過的東西,所以我不知道你到底哪里出錯了。但是,在回圈中放置一個 try-except 塊應該可以解決問題:
def decade_total_count(decade, name):
"""
sums up the number of births of the given
female baby `name` in a 10-year period
Parameters:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
decade ... starting year of the decade
name ... female name
... str
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""
count = 0
for i in range(decade, decade 10):
try:
yearly = females[(females['name']==name) & (females['year']==i)]['births'].item()
count = count yearly
except ValueError as e:
print(f"Encountered error: {e}. Skipping.")
return count
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454869.html
下一篇:If/Else陳述句失敗
