2017-04-13 12 views
3

値として、私はのように見えるデータフレームを持っている辞書のキーとCOL値としてCOLタイトルで辞書にデータフレームの列を変換しますパンダ:dictのは

 NAME    ID 
155 ARBITRARY_A 697381 
208 ARBITRARY_B 691820 
265 ARBITRARY_C 691782 
272 ARBITRARY_D 695593 

私はそのルックス辞書のリストに変換したいですlike:

[{name:ARBITRARY_A, id:697381}, {name:ARBITRARY_B, id:691820}, 
{name:ARBITRARY_C, id:691782}, {name:ARBITRARY_D, id:695593}] 

この操作を行うにはどのような方法が最適ですか?

+2

'df.to_dict( 'record')'? – johnchase

答えて

4

コメントで示されているように、pandas.DataFrame.to_dict()を使用することができます。そして、あなたの場合には、あなたはorientrecordように必要があります。

コード:

df.to_dict('record') 

テストコード:

df = pd.read_fwf(StringIO(u""" 
      NAME    ID 
    155 ARBITRARY_A 697381 
    208 ARBITRARY_B 691820 
    265 ARBITRARY_C 691782 
    272 ARBITRARY_D 695593"""), 
       header=1, index_col=0) 

print(df) 
print(df.to_dict('record')) 

結果:

  NAME  ID 
155 ARBITRARY_A 697381 
208 ARBITRARY_B 691820 
265 ARBITRARY_C 691782 
272 ARBITRARY_D 695593 

[{u'NAME': u'ARBITRARY_A', u'ID': 697381L}, {u'NAME': u'ARBITRARY_B', u'ID': 691820L}, {u'NAME': u'ARBITRARY_C', u'ID': 691782L}, {u'NAME': u'ARBITRARY_D', u'ID': 695593L}] 
+1

偉大な答え!私は特に** bold **と私のものの使用を好きです:-) – piRSquared

+0

すべてが太い方が良いです。 –

1

試してみてください。

df.to_dict() 

これは意図した結果がデータフレームを転置しようと発生しない場合:

df.T.to_dict() 
3

あなたが与えられた自分が

v = df.values.tolist() 
c = df.columns.values.tolist() 

[dict(zip(c, x)) for x in v] 

[{'ID': 697381L, 'NAME': 'ARBITRARY_A'}, 
{'ID': 691820L, 'NAME': 'ARBITRARY_B'}, 
{'ID': 691782L, 'NAME': 'ARBITRARY_C'}, 
{'ID': 695593L, 'NAME': 'ARBITRARY_D'}] 

小さな内包表記をすることによってそれから、もう少しパフォーマンスを絞ることができdf
enter image description here

大きなd1
enter image description here

+0

かなりの色ですが、 'png'の代わりにマークアップでそれを行う方法を理解する必要があります。または、コピーしてiPythonからSOマークアップに貼り付けるのは大事ですか? –

+0

あなたは私にもっと良いものを思いつくよう動機づけたかもしれません:-) – piRSquared

+0

@piRSquared私はあなたのために別のものを手に入れましたhttp://stackoverflow.com/questions/43504945/pandas-selectrows-based-on-multiple-object列内の値: – Fizi

関連する問題