如何通过文件处理从给定的数据框列中获取唯一对?
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:值的长度与索引的长度不匹配...以上是关于如何通过文件处理从给定的数据框列中获取唯一对?的主要内容,如果未能解决你的问题,请参考以下文章