2017-01-26 2 views
0

私は推薦システムで働いています。私はthisに続いて、アイテムマトリックスごとにユーザーを作りました。しかし、私はエラーに直面しましたIndexError: index 8928358160 is out of bounds for axis 0 with size 5アイテムによってユーザーmartrix pandas

以下は、データセットの例です。

import pandas as pd 
import numpy as np 

df = pd.read_csv('APRIL.csv') 
df = df.drop(['BASKETID'],1) 
df = df.head(10) 
df 
Out[89]: 
MEMBERID SKU QTY 
0 8928358161 37101163 2 
1 8928358161 36618858 1 
2 8928358161 40855129 1 
3 8933444371 35010078 1 
4 8932505053 36335949 1 
5 8932505053 92100668 1 
6 8932505053 36529730 2 
7 8921161362 61814893 1 
8 8915688100 34732853 1 
9 8915688100 35122457 1 


n_users = df.MEMBERID.unique().shape[0] 
n_items = df.SKU.unique().shape[0] 
print str(n_users) + ' users' 
print str(n_items) + ' items' 
5 users 
10 items 

ratings = np.zeros((n_users, n_items)) 
for row in df.itertuples(): 
    ratings[row[1]-1, row[2]-1] = row[3] 
ratings 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-92-0a393963bf4c> in <module>() 
     1 ratings = np.zeros((n_users, n_items)) 
     2 for row in df.itertuples(): 
----> 3  ratings[row[1]-1, row[2]-1] = row[3] 
     4 ratings 

IndexError: index 8928358160 is out of bounds for axis 0 with size 5 

index 8928358160からまだ分かりませんでした。

答えて

0

なぜ値を文字列に変換しないのですか? それは整数ではありますが、コンピュータはそれを科学的な値とみなし、浮動小数点値になります。 item_numberには、float値から文字にCUST_IDの変換

をして::

mergedfinal['cust_id'] = mergedfinal['cust_id'].astype(str) 
mergedfinal['item_number'] = mergedfinal['item_number'].astype(str) 
mergedfinal['SKU'] = mergedfinal['SKU'].astype(str) 

mergedfinalは私のデータフレーム

ある

これを試してみてください

関連する問題