我正在尝试在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
列上删除重复项,而不保留这些列中值的顺序。我可以使用frozenset
无序集合集合在Python中轻松完成此操作-参见上文。
我认为连接列然后进行排序可能有用,但实际上,我的列比单字母单元格和this文章中的评论要复杂得多
嗯。 “ Tim Mott”和“ Tom Mitt”在名称形式上将不匹配,但在已排序的字谜形式上将匹配。那可能很有趣。
很清楚,这不是我想要做的。
关于如何在SAS中复制此内容的任何提示?
编辑:最终,这是我要创建的视图,基本上是通过该无序键对记录进行计数:
>>> df.groupby('key').size()
key
(a, c) 2
(b) 1
dtype: int64