将字符串转换为一组以与另一组进行比较

时间:2018-09-07 19:36:23

标签: python string set

我有一个名为data的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'}

,以便我可以比较这个集合和我拥有的另一个集合。我该如何更改我的代码?

2 个答案:

答案 0 :(得分:1)

在读取CSV文件时,请使用转换器将其重新设置为一个集合,然后应用子集操作,例如:

(?=(\d{8})?)

答案 1 :(得分:1)

将数据保存到CSV文件时,由于CSV文件不支持集合,因此您的集合被转换为字符串。您可以使用ast将字符串转换回集合:

import ast
df['Value'] = df['Value'].apply(ast.literal_eval)