2017-04-14 117 views
0

我有这样的DF转换数据帧的矩阵和接入小区

Customer_ID | product_No | Rating 
7   | 1223  | 2.0 
9   | 1254  | 1.0 
8   | 1223  | 5.0 
3   | 1265  | 3.0 

我想将它与0转换成一个矩阵,并填写空值是这样的:

Customer_ID\product_No | 1223 | 1254 | 1265 
7      | 2.0 | 0.0 | 0.0 
9      | 0.0 | 1.0 | 0.0 
8      | 5.0 | 5.0 | 0.0 
3      | 0.0 | 0.0 | 3.0 

我写了这代码来做到这一点:

import pandas as pd 

ratings = pd.read_csv("ratings.csv",names['Customer_ID','product_No','Rating']) 


matrix= ratings.groupby(['Customer_ID','product_No']).sum().unstack(fill_value=0) 

print (matrix) 

现在,当我想访问一个项目,但我不能。我试过这个

matrix.loc[7][1223] 

但我得到0!

你能帮我请 谢谢

回答

1

你必须对列的MultiIndex

>>> matrix.columns 
MultiIndex(levels=[[u'Rating'], [1223, 1254, 1265]], 
      labels=[[0, 0, 0], [0, 1, 2]], 
      names=[None, u'product_No']) 

你可以做,而不是:

matrix.loc[7]['Rating'][1223] 

或者,如果你想只使用索引号,你可以这样做:

matrix.iloc[1][0] 
+0

谢谢你,伯尼。 有没有办法使用索引号(如2d数组)而不是实际值? 例如,[0] [0]会给出第一个左侧单元格的值等等 – fsfr23

+0

当然,您也可以这样做:'matrix.iloc [1] [0]'。我会修改答案。 – bernie

+0

非常感谢你 – fsfr23