2016-12-16 124 views
0

我想计算按年份分组的文档中词的频率数据,然后将数据放入熊猫数据框中。如何创建词典列表

我的例程为每行创建一个字典,包含单词和频率作为键和值。然后,我想循环遍历数年,将字典互相追加,以创建一个字典列表,并将其转换为数据框。

从字典列表中创建数据框似乎是标准的;我可以通过手动创建列表来完成。

我希望能够做这样的事情:

wordtable = {'year':'1965','word1':20, 'word2': 250, 'word3': 125} 
newrow={'year':'1966','word1':150, 'word4': 250, 'word2': 125} 
wordtable.append(newrow) 

df = pandas.DataFrame(wordtable, index=[0]) 
df.to_csv('testdata.csv') 

但.append()会导致一条错误消息,.append()不带字典的工作类型。

+3

尝试'wordtable = [{'year':'1965','word1':20,'word2':250,'word3':125}]]。 'append()'是一个'list'方法。 –

+0

谢谢!但如果我将我的字典转换为list()列表,dataframe命令似乎不起作用。熊猫文献讨论'词典列表'让我感到困惑。 – Jon

+1

你不需要多个词典列表,你想要一个*词典列表*。请参阅piRSquared的答案。 –

回答

1

wordtable需要是词典的列表。然后使用pd.DataFrame.from_records

wordtable = [{'year':'1965','word1':20, 'word2': 250, 'word3': 125}] 
newrow={'year':'1966','word1':150, 'word4': 250, 'word2': 125} 
wordtable.append(newrow) 

df = pd.DataFrame.from_records(wordtable) 
df 

enter image description here

+0

就是这样!非常感谢。 – Jon

+0

@Jon如果这回答了您的问题,请不要忘记将其标记为所选答案。谢谢 – piRSquared

1

正如提到以前的海报,追加()是一个列表的方法,但不是一个字典方法。这应该工作,但:

import pandas 

word_data = [] # list type 
word_counts_1 = {'year': '1965', 'word1':20, 'word2': 250, 'word3': 125} # dict type 
word_counts_2 = {'year':'1966','word1':150, 'word4': 250, 'word2': 125} # dict type 
word_data.append(word_counts_1) # append 1st word count data to list, word_data 
word_data.append(word_counts_2) # append 2nd word count data to list, word_data 
df = pandas.DataFrame(word_data) # create data frame from word_data 
df.to_csv('testdata.csv') # write it out