我正在尝试在SAS中复制以下模式(显示为Python代码):
>>> df = pd.DataFrame({'a': list('abc'), 'b': list('cba')})
>>> df
a b
0 a c
1 b b
2 c a
>>> df['key'] = [frozenset([x, y]) for x, y in df[['a', 'b']].values]
>>> df
a b key
0 a c (a, c)
1 b b (b)
2 c a (a, c)
>>> df.drop_duplicates('key')
a b key
0 a c (a, c)
1 b b (b)
实际上我有两列,
a
和 b
。这张表是通过自连接产生的,a
和 b
代表同一个标准列。我需要在合并/连接的 a
和 b
列上删除重复值,而不保留这些列内的值的顺序。我可以很容易地用 Python 来做到这一点,使用无序集合 frozenset
- 如上所示。我曾经想过连接这些列然后进行排序,但实际上我的列比单个字母单元格要复杂得多,来自此文章的评论使我清楚,这不是我想做的事情。
有关如何在 SAS 中复制此操作的任何提示吗?
编辑:最终,这就是我试图创建的视图,基本上是按无序键计算记录数。
>>> df.groupby('key').size()
key
(a, c) 2
(b) 1
dtype: int64