将字符串转换为集合以与另一个字符串进行比较

2024-10-01 04:51:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为data的csv,看起来像这样(但是有几百条记录):

Id     Value
1k     {'asadf', 'copklj', 'glkjkj', 'hsijlk'}
2j     {'boilk', 'dljk', 'aasadf'}
6k     {'eljkj', 'tljkjlk', 'jljlij'}

我想遍历每一行,看看该行中的值(第2列)是否匹配,或者是我拥有的另一个集合的超集。为此,我使用以下代码提取每行的值:

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'}

这样我就可以比较这一套和另一套了。如何更改代码以实现此目的?你知道吗


Tags: csv代码iddatavalue记录setglkjkj
2条回答

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

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

读取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)

相关问题 更多 >