首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用条件从dataframe打印特定行

使用条件从dataframe打印特定行
EN

Stack Overflow用户
提问于 2017-07-08 08:50:03
回答 2查看 39.7K关注 0票数 2

请注意,--我是在一个函数中这样做的,而且我已经引用了一个非常好的线程。

下面是python函数,传递的参数来自用户

代码语言:javascript
复制
def recommend(uid):
    ds = pd.read_csv("pred_matrix-full_ubcf.csv")
    records = ds.loc[ds['uid'] == uid]
    for recom in records:
        print recom

数据格式:

代码语言:javascript
复制
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线程,但却无法得到它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-08 08:56:22

若要迭代行,请使用df.iterrows()

代码语言:javascript
复制
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

代码语言:javascript
复制
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函数:

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2019-04-17 20:24:30

您还可以立即对where()对象使用DataFrame方法。您可以将此方法的条件作为第一个参数。请参见以下示例:

代码语言:javascript
复制
dataset.where(dataset['class']==0)

,这将提供以下输出

代码语言:javascript
复制
        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减去不匹配条件的行,因此可以重新引用特定列,如

代码语言:javascript
复制
dataset.where(dataset['class']==0)['f000001']

这将为您打印'f000001' (第一个功能)列,其中类标签为0。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44984332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档