【问题标题】:Find particular rows in Graphlab or Python在 Graphlab 或 Python 中查找特定行
【发布时间】:2016-03-27 17:28:16
【问题描述】:

在 Graphlab 中,

我正在处理较大列表中的一小部分电影。

  movieIds_5K_np = LL_features_SCD_min.to_numpy()[:,0]
  ratings_33K_np = ratings_33K.to_numpy()

movieIds_5K_np 是一个包含我的电影 ID 的数组。 `ratings_33K_np' 是一个具有四列的数组,其第二列包含所有电影的电影 ID。

我只需要选择ratings_33K_np 中id 存在于`movieIds_5K_np' 中的行。

我尝试了这种方法,但它似乎不起作用:

 ratings_5K_np = ratings_33K_np[ratings_33K_np[:,2]==movieIds_5K_np] 

如何在 Graphlab 中或使用一些 Python 库来做到这一点?我应该说最初ratings_33KmovieIds_5K 是作为SFrame 导入的。

谢谢

【问题讨论】:

    标签: python graphlab sframe


    【解决方案1】:

    鉴于你有 2 个sframes,你可以做一个join,像这样:

    ratings_5K = LL_features_SCD_min[['id_column_name']].join(ratings_33K, on='id_column_name', how='left')
    

    据我从您的代码中了解到,LL_features_SCD_min 是对应于您的 miniset(5K 数据)的sframe。因此,您只需获取您想要的 ID,然后将它们与整个数据集连接起来,从而获得一个新的 sframe,其中只有您想要的 ID。只需替换您的 id 列名称即可。

    有关join 如何在graphlab 中工作的更多信息,请考虑查看SFrame 上的documentation

    祝你好运!

    【讨论】:

    • 谢谢,效果很好。我能知道“左”和“内”之间的区别吗?在这种情况下,我会使用“内部”连接,您不应该提到“左”
    • left join 可确保您的结果中包含 LL_features sframe 中的所有行(ratings_33 sframe 中缺少的行为空值),而 inner join 将仅返回sframes 中包含的行,如果 ratings_33K sframe 中不存在值,则从 LL_features sframe 中删除值。根据您的需要,您可以使用一种或另一种。有关join 类型的直观解释,请参阅this 答案
    • 惊人的解释和链接。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多