如何通过文件处理从给定的数据框列中获取唯一对?

Posted

技术标签:

【中文标题】如何通过文件处理从给定的数据框列中获取唯一对?【英文标题】:How to get the unique pairs from the given data frame column with file handling? 【发布时间】:2020-05-20 05:15:42 【问题描述】:

来自数据框的样本数据:

(8, 8), (8, 8), (8, 8), (8, 8), (8, 8)
(6, 7), (7, 7), (7, 7), (7, 6), (6, 7)
(2, 12), (12, 3), (3, 4), (4, 12), (12, 12)

    ```
    
        new_col = []
            for e in content.Pairs:
            new_col.append(list(dict.fromkeys(e)))
            content['Unique'] = new_col
    
    ```

预期的输出是来自 Pair 列的唯一对,如下所示:

(8, 8),(6, 7),(7, 6),(7, 7),(2, 12) so on

我在尝试上面的代码时得到的是这个结果:

独特

['8', '']
['6', '7', '']
['2', '12', '3', '4', '']

如果我使用手动数据,那么数据有什么问题,那么为什么不在数据框中呢

【问题讨论】:

您已经发布了两次完全相同的问题。我建议你删除这个,任何想发表评论的人都应该在这里:***.com/questions/60056339/… 而不是列表,只需使用集合。 set 类型强制执行唯一值,最简单的方法是set(<yourListWithDupesHere>)。 (这种方法唯一的缺点是集合中的类型需要是可散列的) 【参考方案1】:

您可以使用 set 方法:

data = (((8, 8), (8, 8), (8, 8), (8, 8), (8, 8)),
  ((6, 7), (7, 7), (7, 7), (7, 6), (6, 7)),
  ((2, 12), (12, 3), (3, 4), (4, 12), (12, 12)))

uniques = []

for col in data:
  for unique in list(set(col)):
    uniques.append(unique)

for x in uniques:
  print(x)

data = (((8, 8), (8, 8), (8, 8), (8, 8), (8, 8)),
  ((6, 7), (7, 7), (7, 7), (7, 6), (6, 7)),
  ((2, 12), (12, 3), (3, 4), (4, 12), (12, 12)))

uniques = []

for col in data:
  uniques += [unique for unique in list(set(col))]

for x in uniques:
  print(x)

【讨论】:

【参考方案2】:

您可以使用 set() 方法从元组列表中删除重复项。

 >>> items = [(8, 8), (8, 8), (8, 8), (8, 8), (8, 8),
(6, 7), (7, 7), (7, 7), (7, 6), (6, 7),
(2, 12), (12, 3), (3, 4), (4, 12), (12, 12)]
>>> set_items = set(items)
>>> set_items
(6, 7), (7, 6), (12, 12), (7, 7), (8, 8), (4, 12), (2, 12), (3, 4), (12, 3)

【讨论】:

它不起作用我收到此错误/ValueError:值的长度与索引的长度不匹配...

以上是关于如何通过文件处理从给定的数据框列中获取唯一对?的主要内容,如果未能解决你的问题,请参考以下文章

如何从连接的数据框列中替换 NaN?

如何在熊猫数据框列中获取 NaN 观察的频率 [重复]

从 Pandas 数据框列中删除“秒”和“分钟”

从 Spark 数据框列中 ArrayType 类型的行中获取不同的元素

火花数据集:如何从列中获取唯一值的出现次数

从 pandas 数据框列中的对象中删除逗号