请不要立即标记我的答案,因为我搜索了其他无法解决问题的问题,例如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'
谢谢大家!
答案 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)