使用条件打印数据框中的特定行

T3J*_*J45 3 python dataframe pandas

请注意,我是在函数中执行此操作的,并且我已经提到了一个非常好的线程。

这是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
Run Code Online (Sandbox Code Playgroud)

数据格式:

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
Run Code Online (Sandbox Code Playgroud)

参考: this1 , this2

无法找到我出错的地方,我正在关注this1线程,但无法得到它。

cs9*_*s95 8

要迭代行,请使用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
Run Code Online (Sandbox Code Playgroud)

还有另外两种可能的方法来选择数据。您可以使用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
Run Code Online (Sandbox Code Playgroud)

您还可以使用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
Run Code Online (Sandbox Code Playgroud)