web-dev-qa-db-ja.com

Python辞書からCSV

CSVをpython辞書に読み込むコードを記述しました。これは正常に機能します。辞書をCSVに戻そうとしています。以下を記述しました:

import csv

itemDict={}

listReader = csv.reader(open('/Users/broberts/Desktop/Sum_CSP1.csv','rU'), delimiter = ',', quotechar='|')

for row in listReader:
    fID = row[0]
    fClassRange = row[1]
    fArea = row[2]

    if itemDict.has_key(fID):
        itemDict[fID][fClassRange]=fArea
    else:
        itemDict[fID] = {'5.0 to 5.25':'','5.25 to 5.5':'','5.5 to 5.75':'','5.75 to 6.0':'','6.0 to 6.25':'','6.25 to 6.5':'','6.5 to 6.75':'','6.75 to 7.0':'','7.0 to 7.25':'','7.25 to 7.5':'','7.5 to 7.75':'','7.75 to 8.0':'','8.0 to 8.25':'',}
        itemDict[fID][fClassRange]=fArea

listWriter = csv.writer(open('/Users/broberts/Desktop/Sum_CSP1_output.csv', 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)

for a in itemDict:
    print a
    listWriter.writerow(a)

最後のブロックでは、listWriterはaを出力しますが、CSVには何も書き込みません。これは、辞書が順不同であることに関係していると思います。私は本当に、fIDと各fIDに関連付けられた各キー(fClassRange ex。 "5.0 to 5.25")、次に各fClassRangeに関連付けられた値fAreaをCSVに書き出す必要がありますが、これまでのところfIDも書き出す方法がわからないので、私のコード。

私はDictWriterの使用を調査しましたが、必要なfieldnamesが何であるかをどのように伝えるかわかりません。

29
bojo

最も簡単な方法

辞書をデータフレームに変換してcsv Egに書き込むことができます

import pandas as pd
my_dict = {"tester": 1, "testers": 2}
df=pd.DataFrame(my_dict,index=[0])
df.to_csv("path and name of your csv.csv")

出力

   tester  testers
0       1        2
0
Lucifer