【发布时间】:2016-12-08 14:12:55
【问题描述】:
给定来自SFrame 的矩阵:
>>> from sframe import SFrame
>>> sf =SFrame({'x':[1,1,2,5,7], 'y':[2,4,6,8,2], 'z':[2,5,8,6,2]})
>>> sf
Columns:
x int
y int
z int
Rows: 5
Data:
+---+---+---+
| x | y | z |
+---+---+---+
| 1 | 2 | 2 |
| 1 | 4 | 5 |
| 2 | 6 | 8 |
| 5 | 8 | 6 |
| 7 | 2 | 2 |
+---+---+---+
[5 rows x 3 columns]
我想获取 x 和 y 列的唯一值,我可以这样做:
>>> sf['x'].unique().append(sf['y'].unique()).unique()
dtype: int
Rows: 7
[2, 8, 5, 4, 1, 7, 6]
这样我得到 x 的唯一值和 y 的唯一值,然后附加它们并获取附加列表的唯一值。
我也可以这样做:
>>> sf['x'].append(sf['y']).unique()
dtype: int
Rows: 7
[2, 8, 5, 4, 1, 7, 6]
但是这样一来,如果我的 x 和 y 列很大并且有很多重复项,我会在获得唯一性之前将其附加到一个非常大的容器中。
是否有更有效的方法来获取从 SFrame 中的 2 个或更多列创建的组合列的唯一值?
从pandas 中的 2 列或更多列中获取唯一值的有效方法在 pandas 中的等效性是什么?
【问题讨论】:
-
输出中元素的顺序是否重要?将输出作为列表还是数组可以吗?
-
SFrame's API 与 Pandas API 相比相当差,因此与您的解决方案相比,我认为您无法以更有效的方式做到这一点。也许是时候考虑使用Apache Spark了?
标签: python csv pandas dataframe sframe