匹配CSV值以创建字典Python

0vvn1miw  于 2023-03-05  发布在  Python
关注(0)|答案(1)|浏览(117)

我一直在尝试制作一个自动更正和完成程序,并尝试使用CSV的频率算法使其更有用,但我对使用CSV文件还很陌生。我正在尝试从CSV文件创建一个字典,然后我可以使用它来确定最佳结果。
CSV文件包含百万行中的1/3,从最高频率到最低频率排序。它以两个项目类别“单词”和“计数”开始,然后是333,333行。

word,count
the,23135851162
of,13151942776
and,12997637966
to,12136980858
a,9081174698
in,8469404971
for,5933321709
is,4705743816
on,3750423199

使用文件here,我尝试创建一个字典,如下所示:

{"the":23135851162, "of":13151942776, "and":12997637966, "to":12136980858, etc.}

我试着用下面的脚本使用Pandas库,

import pandas as pd
data = pd.read_csv("./unigram_freq.csv")
wordFreq = {col: list(data[col]) for col in data.columns}

但最终得到的字典输出如下所示。

{'word': ['the', 'of', 'and', 'to', etc.], 'count':[23135851162, 13151942776, 12997637966, 12136980858, etc.]}
xxb16uws

xxb16uws1#

您已经非常接近了-dict(zip(*[data[col] for col in data.columns]))应该可以工作,但是当您将两列zip在一起,使它们成为可以转换为字典的键-值对列表时,更具体一些可能会更好:

wordFreq = dict(zip(data['word'], data['count'])) ## same as:
# wordFreq = {k:v for k,v in zip(data['word'], data['count'])}

或者,您可以使用<DataFrame>.to_dict函数,如

wordFreq = dict(data.to_dict('split')['data'])

不过,如果有两个以上的列(或者它们的顺序不同),则需要指定哪个列用于键,哪个列用于值:

wordFreq = dict(data.set_index('word')['count']) ## series with index ## OR
# wordFreq = dict(data[['word', 'count']].to_dict('split')['data']) ## list of lists

相关问题