2016-12-16 127 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