【问题标题】:graphlab - sframe : How to remove rows which have same ids and condition on a column?graphlab - sframe:如何删除列上具有相同 ID 和条件的行?
【发布时间】:2017-09-18 08:41:44
【问题描述】:

我有一个 graphlab sframe 数据框,其中几行在“uid”列中具有相似的 id 值。

| VIM Document Type | Vendor Number & Zone | Value <5000 or >5000 | Today Status |
+-------------------+----------------------+----------------------+--------------+
|     PO_VR_GLB     |     1613407EMEAi     |    Less than 5000    |      0       |
|     PO_VR_GLB     | 249737LATIN AMERICA  |    More than 5000    |      1       |
|     PO_MN_GLB     | 1822317NORTH AMERICA |    Less than 5000    |      1       |
|     PO_MN_GLB     | 1822317NORTH AMERICA |    Less than 5000    |      1       |
|     PO_MN_GLB     | 1822317NORTH AMERICA |    Less than 5000    |      1       |
|     PO_MN_GLB     | 1216902NORTH AMERICA |    More than 5000    |      1       |
|     PO_MN_GLB     |     1213709EMEAi     |    Less than 5000    |      0       |
|     PO_MN_GLB     | 882843NORTH AMERICA  |    More than 5000    |      1       |
|     PO_MN_GLB     | 2131503ASIA PACIFIC  |    More than 5000    |      1       |
|     PO_MN_GLB     | 2131503ASIA PACIFIC  |    More than 5000    |      1       |
+-------------------+----------------------+----------------------+--------------+
+---------------------+
|         uid         |
+---------------------+
|      63068$#069     |
|       5789$#13      |
| 12933036$#IN6532618 |
| 12933022$#IN6590132 |
| 12932349$#IN6636468 |
|   12952077$#203250  |
| 13012770$#MUML04184 |
|   12945049$#112370  |
|  13582330$#CI160118 |
|  13012770$#MUML04184|

在这里,我想保留所有具有唯一 uid 的行,并且只保留具有相同 uid 的行,要保留的行可以是今天状态 = 1 的任何行,(即可以有 uid 的行和行状态相同,但其他字段不同,在这种情况下,我们可以保留这些行中的任何一行。)我想在 graphlab sframes 中执行这些操作,但无法弄清楚如何进行。

【问题讨论】:

    标签: python dataframe graphlab sframe


    【解决方案1】:

    你可以使用SFrame.unique(),它可以为你提供独特的行

    sf = sf.unique()
    

    其他方法也可以使用groupby() 方法或join() 方法,您可以在其中指定列名和进一步工作。您可以通过各种方式阅读他们在 turi.com click 上的文档。

    另一种方式(我个人更喜欢)是将 SFrame 转换为 pandas 的 Dataframe,然后进行数据操作,然后再次将 pandas Dataframe 转换为 SFrame。这取决于您的选择,我希望这会有所帮助。

    【讨论】:

    • 感谢您的回复。问题是 .unique 仅删除检查行中所有列的重复项。我只想对几列执行此操作,即可能存在 uid 和行状态相同的行,但其他字段不同,在这种情况下,我们可以保留这些行中的任何一个。此外,groupby 不会存储整个 sframe,它会将其缩减为您在 key_columns 中提到的列。
    • @Tarun 我个人会在选定列上选择groupby(),然后使用 .join 加入选定列上的 sframe。是的,我完全同意您的观点,即 groupby 不会保留所有 sframe,但这是使用 groupby 处理选定的列。另一种方法是您可以使用 pandas 并轻松处理多个列。
    • @Tarun 如果这对您有用,请勾选答案以验证此答案。谢谢
    • 是的,我将它们转换为熊猫并改回来了!谢谢
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多