我有一個名為 df3 的 DataFrame,它有 2 列 - 'fan' 和 'Household Income',如下所示。我正在嘗試遍歷“家庭收入”列,如果該列的值為“$0 - $24,999”,則將其添加到 bin 'low_inc'。如果該列的值為“$25,000 - $49,999”,請將其添加到 bin 'lowmid_inc' 等。但我收到一個錯誤,提示“int”物件不可迭代。
df3 = df_hif.dropna(subset=['Household Income', 'fan'],how='any')
low_inc = []
lowmid_inc = []
mid_inc = []
midhigh_inc = []
high_inc = []
for inc in df3['Household Income']:
if inc == '$0 - $24,999':
low_inc = 1
elif inc == '$25,000 - $49,999':
lowmid_inc = 1
elif inc == '$50,000 - $99,999':
mid_inc = 1
elif inc == '$100,000 - $149,999':
midhigh_inc = 1
else:
high_inc = 1
#print(low_inc)
這是使用的 df 的 5 行示例:
Household Income fan
774 25,000? 49,999 Yes
290 50,000? 99,999 No
795 50,000? 99,999 Yes
926 $150,000 No
1017 $150,000 Yes
左列(774、290 等)是索引,顯示受訪者 ID。上面我的 if/else 陳述句中列出了不同“家庭收入”列的 5 個范圍,但是當我嘗試列印這些垃圾箱時收到錯誤訊息。
對于每個受訪者,我試圖將 1 添加到桶“low_bin”、“high_bin”等。所以我試圖計算家庭收入在 0-24999、25000-49000 等之間的受訪者數量. 如何遍歷列以將受訪者的數量統計到適當的 bin 中?
uj5u.com熱心網友回復:
在 Pandas 中迭代并不可取。您可以將它們分成不同的資料框:
low_inc = df3[df3['Household Income'] == '$0 - $24,999'
lowmid_inc = df3[df3['Household Income'] == '$25,000 - $49,999'
ETC...
該len(low_inc)示例將為您提供每個資料框中的行數
或者,嘗試groupby:
df3.grouby('Household Income').count()
uj5u.com熱心網友回復:
我會簡單地使用
df3 = df3['Household Income']
bins = int(max(df3)-min(df3)/25000)
out = df3.hist(bins=10)
最后在相關箱中取出結果的總和。前任。25000-50000 將與 1 個 bin 有關,而 50000-100000 將與 2 個 bin 有關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518290.html
下一篇:代碼跳過If并立即轉到Else
