在Python中从csv文件生成字符串集

时间:2018-12-13 19:01:15

标签: python pandas set

请不要立即标记我的答案,因为我搜索了其他无法解决问题的问题,例如this.

我正在尝试从csv文件生成一组python字符串。加载的csv文件的打印的熊猫数据帧具有以下结构:

   0
0  me
1  yes
2  it

对于一个项目,我需要将其格式化为如下所示

STOPWORDS = {'me', 'yes', 'it'}

我试图通过以下代码来做到这一点。

import pandas as pd

df_stopwords = pd.read_csv("C:/Users/Jakob/stopwords.csv", encoding = 'iso8859-15', header=-1)

STOPWORDS = {}
for index, row in df_stopwords.iterrows():
    STOPWORDS.update(str(row))

print(STOPWORDS)

但是,出现此错误:

dictionary update sequence element #0 has length 1; 2 is required

使用STOPWORDS.update(str(row))时出现此错误:

'dict' object has no attribute 'add'

谢谢大家!

4 个答案:

答案 0 :(得分:3)

您可以使用以下方法直接从数据框中的值创建set

set(df.values.ravel())
{'me', 'yes', 'it'}

答案 1 :(得分:1)

字典是键和值的映射。就像许多其他语言中的对象一样。由于需要将其作为一组,因此将其定义为一组。以后不要将其更改为一组。

import pandas as pd

df_stopwords = pd.read_csv("C:/Users/Jakob/stopwords.csv", encoding = 'iso8859-15', header=-1)

STOPWORDS = set()
for index, row in df_stopwords.iterrows():
    STOPWORDS.add(str(row))

print(STOPWORDS)

答案 2 :(得分:1)

您似乎需要将列中的值转换为列表,然后将列表用作停用词。

stopwords = df_stopwords['0'].tolist()
--> ['me', 'yes', 'it']

答案 3 :(得分:1)

如接受的答案here中所述。您可能想使用itertuples(),因为它更快。

STOPWORDS = set()
for index, row in df_stopwords.itertuples():
    STOPWORDS.add(row)

print(STOPWORDS)