是否有一种最佳方法可以在 Python 的 N 个集合中找到唯一元素?
Is there an optimal way to find unique elements within N sets with Python?
我目前正在处理一个示例,其中我有 45 个数据框和大约 60,000 个字符串条目。我想知道与我拥有的所有其他数据帧(或集)相比,哪些字符串是唯一的,示例中为 entry_df['strings']
。
我尝试使用库 supervenn (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)
如果需要在所有集合中只放置一次的元素,可以对集合使用^操作。
set1 ^ set2
returns set1 或 set2 中所有元素的集合,但不是两者。
我目前正在处理一个示例,其中我有 45 个数据框和大约 60,000 个字符串条目。我想知道与我拥有的所有其他数据帧(或集)相比,哪些字符串是唯一的,示例中为 entry_df['strings']
。
我尝试使用库 supervenn (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)
如果需要在所有集合中只放置一次的元素,可以对集合使用^操作。
set1 ^ set2
returns set1 或 set2 中所有元素的集合,但不是两者。