无序集作为列/ Python的Frozenset对象

时间:2019-10-18 12:58:58

标签: python sas

我正在尝试在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)

有效地,我有两列ab。该表是通过自联接产生的,ab代表同一规范列。我需要在合并/串联的ab列上删除重复项,而不保留这些列中值的顺序。我可以使用frozenset无序集合集合在Python中轻松完成此操作-参见上文。

我认为连接列然后进行排序可能有用,但实际上,我的列比单字母单元格和this文章中的评论要复杂得多

  

嗯。 “ Tim Mott”和“ Tom Mitt”在名称形式上将不匹配,但在已排序的字谜形式上将匹配。那可能很有趣。

很清楚,这不是我想要做的。

关于如何在SAS中复制此内容的任何提示?

编辑:最终,这是我要创建的视图,基本上是通过该无序键对记录进行计数:

>>> df.groupby('key').size()
key
(a, c)    2
(b)       1
dtype: int64

0 个答案:

没有答案