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

Posted

技术标签:

【中文标题】在 Python 中从 csv 文件生成字符串集【英文标题】:Generate string set from csv file in Python 【发布时间】:2019-05-15 01:28:12 【问题描述】:

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

我正在尝试从 csv 文件生成一组 python 字符串。加载的 csv 文件打印出来的 pandas 数据帧结构如下:

   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'

提前谢谢大家!

【问题讨论】:

您需要dict 还是set 怎么样:set(df_stopwords[0]) 做类似set(df.values.ravel())的事情 @nixon 请将其发布为答案。我想把这归功于你!解决了我的问题。总之:请点赞! ;-P @YOLO 您的解决方案也很完美。我想接受你的两个答案! :D 非常感谢! 【参考方案1】:

您可以直接从数据框中的值创建set

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

【讨论】:

【参考方案2】:

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

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)

【讨论】:

我需要大括号。这就是我不能使用列表的原因。谢谢! 为什么需要大括号? Python 仅将它们用于特定的事情。 我使用这个集合作为 wordcloud 库的输入,它需要一组不应该在词云中显示的词。它不接受列表。 如果你将它格式化成一个字符串,你可以这样做:with_curly_brackets = str(STOPWORDS).replace("[", "").replace("]", "") 啊...我明白了。我正在用更 Pythonic 的方式更新我的答案。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

print(STOPWORDS)

【讨论】:

以上是关于在 Python 中从 csv 文件生成字符串集的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中从 CSV 文件创建混合图表

在 Python 中从 CSV 文件创建混合图表

如何在 Python 中从数据库创建 CSV 文件?

如何在python中从csv文件构建带有边框的表格

在python中从多个JSON文件中提取信息到单个CSV文件

我可以在 python3 中从 excel 文件(不是 CSV)创建字典吗?