将字符串转换为集合以与另一个集合进行比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将字符串转换为集合以与另一个集合进行比较相关的知识,希望对你有一定的参考价值。
我有一个名为数据的csv看起来像这样(但有几百条记录):
Id Value
1k {'asadf', 'copklj', 'glkjkj', 'hsijlk'}
2j {'boilk', 'dljk', 'aasadf'}
6k {'eljkj', 'tljkjlk', 'jljlij'}
我想迭代每一行,看看该行中的值(第二列)是否匹配,或者是我拥有的另一个集的超集。为此,我使用以下代码为每行提取了值:
i = 1
x = data['Value'].iloc[i]
我计划在循环中使用它,每次迭代时都会向变量i
添加1。然而,每当我做type(x)
时,它就像str
一样。为了改变这一点,我可以将它与我的另一组进行比较,我做了两个
x = set(x)
和
x = set([x])
第一个出现了所有字母分开。第二个出来了
{"{'asadf', 'copklj', 'glkjkj', 'hsijlk'}"}
我想要的输出是
{'asadf', 'copklj', 'glkjkj', 'hsijlk'}
所以我可以比较这个集合和我拥有的其他集合。如何更改我的代码呢?
答案
在读取CSV文件时,使用转换器再次设置它,然后应用子集操作,例如:
import ast
import pandas as pd
df = pd.read_csv('somefile', converters={'Value': ast.literal_eval})
is_subset = df.Value.map({'a', 'b'}.issubset)
另一答案
将数据保存为CSV文件时,您的集合将转换为字符串,因为CSV文件不支持集合。您可以使用ast
将字符串转换回集合:
import ast
df['Value'] = df['Value'].apply(ast.literal_eval)
以上是关于将字符串转换为集合以与另一个集合进行比较的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI,Firestore 获取一个集合并与另一个集合匹配