【问题标题】:how to return unique pairs in a list (with different order) in same object in python [closed]如何在python中的同一对象中返回列表中的唯一对(具有不同的顺序)[关闭]
【发布时间】:2021-09-29 04:51:55
【问题描述】:

如何获取表中的唯一对?

Col 1 Col 2 Col 3
A One B
A One B
B One A
C One D
E One F

我想获取第 1 列和第 3 列的唯一对,并返回值如 {'A&B','C&D','E&F'}

【问题讨论】:

  • 如果要将A&BB&A视为相同,可以同时构造Col1 & Col3Col3 & Col1,然后取最小值

标签: python unique


【解决方案1】:

试试unique:

>>> (df['Col 1'] + '&' + df['Col 3']).unique()
array(['A&B', 'B&A', 'C&D', 'E&F'], dtype=object)
>>> 

drop_duplicates:

>>> (df['Col 1'] + '&' + df['Col 3']).drop_duplicates()
0    A&B
2    B&A
3    C&D
4    E&F
dtype: object
>>> 

如果您将A&B 视为与B&A 相同,请尝试:

>>> df[['Col 1', 'Col 3']].agg(sorted, axis=1, result_type='expand').agg('&'.join, axis=1).unique()
array(['A&B', 'C&D', 'E&F'], dtype=object)
>>> 

或者:

>>> df[['Col 1', 'Col 3']].agg(sorted, axis=1, result_type='expand').agg('&'.join, axis=1).drop_duplicates()
0    A&B
3    C&D
4    E&F
dtype: object
>>> 

【讨论】:

  • 谢谢。如果我只想让这些对出现不止一次,我应该如何调整?
  • @ETT 也许试试df['Col 1'] + '&' + df['Col 3']
  • 这样吗? df[[df['Col 1'] + '&' + df['Col 3']]].agg(排序,axis=1,result_type='expand').agg('&'.join,axis= 1).drop_duplicates()
  • @ETT 是的!那会工作
  • @U12-Forward 对您的回答没有任何异议,但是通过提供编码尝试或预期输出 @ETT 可以避免这种混淆。请将此评论用作未来的指导。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2014-03-12
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多