2017-06-05 4 views
0

私は、値の順序を保持するために、ordereddictからpandasデータフレームを作成しようとしています。しかし、何らかの理由でデータフレームを作成した後、フィールドが再び乱れてしまいます。ここでordereddictからpandasデータフレームを生成しますか?

はordereddictsのリストです:

[OrderedDict([ 
    ('key_a', 
    'value_a'), 
    ('key_b', 
    'value_b'), 
]), 
OrderedDict([ 
    ('key_a', 
    'value_c'), 
    ('key_b', 
    'value_d'), 
]) 
] 

は今どのように私はこれらからパンダのデータフレームを作成する必要がありますか?私が試してみました

key_a key_b 
0 value_a value_b 
1 value_c value_d 

pd.DataFrame.from_records(orderedDictList) 
pd.DataFrame.from_dict(orderedDictList) 

は、追加の質問をお気軽に私は何を探していますが、そのようなものである(重要なのは、key_aとkey_bなど列名の順序があります)。

+0

'pd.DataFrame(orderedDictList)は' ' – MaxU

+0

私のため.from_dict' exceptsではうまく動作しますあなたが 'orient = index'を渡さない限り、辞書は' {'col_a':[val_1、val_2]、 'col_b':[val_3、val_4]}の形式になります。 – DeepSpace

答えて

3

this答えた後、あなたは明示的に列の順序を指定する必要があります。もちろん

df = pd.DataFrame(orderedDictList, columns=orderedDictList.keys()) 

、まずあなたが発注した辞書を持っていることを確認する必要があります。

0

あなたはcollectionsモジュールからCounterを使用して、このような何かを行うことができます。

from collections import OrderedDict, Counter 
import pandas as pd 

a = {'key_a': 'value_a', 'key_b':'value_b'} 
b = {'key_a': 'value_c', 'key_b':'value_d'} 

ord_list = [OrderedDict(a), OrderedDict(b)] 

col = Counter() 
for k in ord_list: 
    col.update(k) 


df = pd.DataFrame([k.values() for k in ord_list], columns = col.keys()) 

print(df) 

出力:

 key_b key_a 
0 value_b value_a 
1 value_d value_c 
関連する問題