2016-07-26 9 views
1

辞書をCSVファイルに出力しようとしています。私は時間の日付と値として、文字列形式の日付に関連する会社をキーとして含む辞書を持っています。私は同じ質問のためにウェブサイトを見てみることを試みたが、それは実際に私の場合を助けるものではない。私は次のコードを試して、最初の行のキーを取得するために管理され、2番目の列の値が、私が欲しいものではありません。各キーが別々の行にあり、値が別の列にあるcsvへのpython辞書

import csv 
with open('dict1.csv','w') as f: 
    w = csv.writer(f,delimiter=',') 
    for key,values in sorted(a.items()): 
     w.writerow([key,values]) 

しかし、これは私に次の形式のCSVファイルを提供します:

2009/01/02 ['AA' 'BB' 'AAPL'] etc 
2009/01/03 ['AA' 'CC' 'DD' 'FF'] 

は、したがって、私は唯一の2つの列を持っています。しかし、私はしたい:

2009/01/02 'AA' 'BB' 'AAPL' 
2009/01/02 'AA' 'CC' 'DD' 'FF' 

最初の行の4つの別々の列と5番目の行の5つのそれぞれ。
私も

for dates in sorted(a): 
    w.writerow([date] + my_dict[date]) 

を試してみました。しかし、これは+「タイムスタンプ」と「str」はサポートされていないため、オペランドのタイプを言って私にエラーを与えます。

ご協力いただければ幸いです。

for key,values in sorted(a.items()): 
    w.writerow(str(key) + "," + ","join(values)) 

",".join(values)は、カンマで区切られた文字列に値のリストを分割します:ありがとう

+0

にタイムスタンプオブジェクトを変換してみ左に表示されている日付はおそらく文字列ではありません。 –

+0

文字列に変換すると、すべてのキーが何らかの理由で別の列として格納されます。 – rajn

答えて

1

この行では、キー変数に日付(キー)を入力し、値はのリストに値を設定しています。したがって、値には実際に['AA' 'BB' 'AAPL']のようなものが含まれます。

for key,values in sorted(a.items()): 

次のあなたはのwriterowを言っている、「二つの要素を持つ行を記述します。最初は鍵であり、第二には、値であるものは何でもある」(それは単なる文字列表現に変換されますので、リストされているとそのような出力)。

w.writerow([key,values]) 

ので、[キー、値]は次のようになります。

[2009/01/02, ['AA','BB','AAPL']] 
^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ 
the key  this whole thing 
      is the single value 

あなたがしたいと思う何を、私が思うに、キーを含む1、キーと文字列を含む単一のリストをない作成することです文字列のリスト。与えられたリスト内のすべての項目を追加することによって、リストを拡張します:ん

the_row = [key] # Create the initial row with just key 
    the_row.extend(values) # Add the values, one by one, to the row 
    w.writerow(the_row) # Write the full row 

list.extend(L):あなたはそうのような余分な値でリストを拡張することができます。

+0

感謝しますが、writerowシーケンスが期待されています。 – rajn

+0

お詫び申し上げます! extend()は拡張リストを返しませんが、その場所で変更します。この例を一瞬で修正します。 – Roadmaster

+0

Mr. Roadmasterに感謝します。それはうまくいった。 :) – rajn

0

あなたはこのような何かを置く必要があるかもしれません。あなたの例では列がタブで区切られていても、あなたはcsvファイルを書いているので、あなたはあなたの列をカンマで区切りたいと思っています。

+0

申し訳ありませんが、それぞれの値に対応しています私の鍵には、会社のティッカーで区切られたリストがあります。それらはコンマで区切られています。しかし、ファイルをExcelに出力するには、出力されるフォーマットが奇妙です。私はあなたの方法を試みたが、私が望むものではないカラムとして '、'を取得しています。 – rajn

1

申し訳ありませんが、私はこれを間違って読んでいますが、あなたはpython pandasを使用していますか?

"私は、キーとして時間の日付と値を含む辞書を持っていますが、文字列形式の日付に関連する会社です。このような何かがうまくいくかもしれない、その場合の

import pandas as pd 
df = pd.DataFrame(mydict) 
df = df.transpose() 
df.to_csv('dict1.csv',encoding='utf-8') 

to_csv方法は、必要に応じて変更することができ区切​​り文字としてデフォルトの使用 『』こと。

+0

申し訳ありません。日付はdatetimeオブジェクト内にあります。パンダではありません。私は言葉を変えます。 – rajn

関連する問題