请注意,--我是在一个函数中这样做的,而且我已经引用了一个非常好的线程。
下面是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我无法找到我所犯的错误,我正在跟踪this1线程,但却无法得到它。
发布于 2017-07-08 08:56:22
若要迭代行,请使用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发布于 2019-04-17 20:24:30
您还可以立即对where()对象使用DataFrame方法。您可以将此方法的条件作为第一个参数。请参见以下示例:
dataset.where(dataset['class']==0),这将提供以下输出
f000001 f000002 f000003 ... f000102 f000103 class
0 0.000000 0.000000 0.000000 ... 0.000000 0.080000 0.0
1 0.000000 0.000000 0.000000 ... 0.000000 0.058824 0.0
2 0.000000 0.000000 0.000000 ... 0.000000 0.095238 0.0
3 0.029867 0.000000 0.012769 ... 0.000000 0.085106 0.0
4 0.000000 0.000000 0.000000 ... 0.000000 0.085106 0.0
5 0.000000 0.000000 0.000000 ... 0.000000 0.085106 0.0
6 0.000000 0.000000 0.000000 ... 0.000000 0.127660 0.0
7 0.000000 0.000000 0.000000 ... 0.000000 0.106383 0.0
8 0.000000 0.000000 0.000000 ... 0.000000 0.127660 0.0
9 0.000000 0.000000 0.000000 ... 0.000000 0.106383 0.0
10 0.000000 0.000000 0.000000 ... 0.000000 0.085106 0.0
11 0.021392 0.000000 0.000000 ... 0.000000 0.042553 0.0
12 -0.063880 -0.124403 -0.102466 ... 0.000000 0.042553 0.0
13 0.000000 0.000000 0.000000 ... 0.000000 0.021277 0.0
14 0.000000 0.000000 0.000000 ... 0.000000 0.000000 0.0
15 0.000000 0.000000 -0.060884 ... 0.000000 0.000000 0.0
[18323 rows x 104 columns](为了简洁的答案,我去掉了其余的输出)
与仅引用相比,使用此方法的一个巨大优点是,您还可以使用other参数替换那些与条件不匹配的值,还可以对使用inplace参数匹配条件的值执行一些操作。基本上,您可以根据需要重构数据的行。
此外,由于此函数返回a dataframe减去不匹配条件的行,因此可以重新引用特定列,如
dataset.where(dataset['class']==0)['f000001']这将为您打印'f000001' (第一个功能)列,其中类标签为0。
https://stackoverflow.com/questions/44984332
复制相似问题