用python在n个集合中找到唯一元素有没有最佳方法?

vhipe2zx  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(342)

我目前正在研究一个示例,其中有45个Dataframe,其中包含大约60000个字符串条目。我想知道与我拥有的所有其他Dataframe(或集)相比,哪些字符串是唯一的, entry_df['strings'] 在这个例子中。
我试着用超人图书馆(https://github.com/gecko984/supervenn)绘制不同集合中的唯一元素和共享元素,但我的数据太大,无法使用此库绘制。
找到这些独特元素有没有最佳的方法?我想一次至少比较9组,这样 A.intersect B, C, D, E, F, G, H, I = ∅ . 我想过在每个集合上迭代循环并删除公共元素,但是我没有找到优化内存使用的方法。我用来绘制supervenn图的代码是:

entry_files = glob('../*/dataframe.csv')

allentries = []
labels = []

for f in entry_files:
    entry_df = pd.read_csv(f)
    string_set = set(entry_df['strings'].unique().tolist())
    allentries.append(string_set)
    labels.append(f'{entry_df.type.unique()}')

import supervenn

plt.figure(figsize=(16, 8))
supervenn.supervenn(allentries, labels, widths_minmax_ratio=0.45)
yqlxgs2m

yqlxgs2m1#

如果需要在所有集合中只放置一次的元素,可以对集合使用“^”运算。
集合1^集合2
返回集合1或集合2中所有元素的集合,但不能同时返回两者。

相关问题