2017-07-08 55 views
0

被建議我在一個函數中這樣做,我已經提到了一個相當不錯的線程。使用條件從數據框中打印特定行

這裏的Python函數,傳遞的參數是從用戶採取

def recommend(uid): 
    ds = pd.read_csv("pred_matrix-full_ubcf.csv") 
    records = ds.loc[ds['uid'] == uid] 
    for recom in records: 
     print recom 

數據格式:

uid iid  rat 
344 1189 5 
344 1500 5 
344 814  5 
736 217  3.3242361285 
736 405  3.3238380154 
736 866  3.323500531 
331 1680 2 
331 1665 2 
331 36  1.999918585 

簡稱: this1this2

無法獲取,我」我錯了,我正在關注this1線程,但無法獲取它。

+0

究竟是什麼錯誤,你得到什麼? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ我沒有得到這個錯誤,我得到的所有數字都是'uid iid rat',我輸入的任何數字 – T3J45

+0

Tejas,現在我明白了。看看我的答案。你需要調用'records.iterrows()'。 –

回答

1

遍歷你行,請使用df.iterrows()

In [53]: records = df[df['uid'] == query] 

In [54]: for index, row in records.iterrows(): 
    ...:  print(row['uid'], row['iid'], row['rat']) 
    ...: 
344.0 1189.0 5.0 
344.0 1500.0 5.0 
344.0 814.0 5.0 

還有其他兩個可能的方法可以做到選擇您的數據。您可以使用boolean indexing

In [4]: query = 344 

In [7]: df[df['uid'] == query] 
Out[7]: 
    uid iid rat 
0 344 1189 5.0 
1 344 1500 5.0 
2 344 814 5.0 

您還可以使用DataFrame.query功能:

In [8]: df.query('uid == %d' %query) 
Out[8]: 
    uid iid rat 
0 344 1189 5.0 
1 344 1500 5.0 
2 344 814 5.0 
+0

嘿,我確實嘗試過。但它沒有成功。這是我所得到的。 – T3J45

+0

'記錄= DS [DS [ 'UID'] == ID]在記錄RECOM : 打印recom'使輸出爲'輸入用戶ID:344 UID IID rat' – T3J45

+0

@Tejas你的代碼看起來一點也不像礦。您應該使用'for index,在records.iterrows()'中使用行。你有沒有看到我的答案? –