web-dev-qa-db-ja.com

ordereddictからpandasデータフレームを生成しますか?

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

次に、ordereddictのリストを示します。

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

ここで、これらからpandas DataFrame?を作成する必要がありますか?私が探しているのはそのようなものです(重要なことはkey_aとkey_bなどの列名の順序です):

  key_a    key_b
0 value_a  value_b
1 value_c  value_d

私が試してみました:

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

その他のご質問はお気軽にお問い合わせください。

12
E. Muuli

this answerに続いて、列の順序を明示的に指定する必要があります。

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

もちろん、まず順序付けられた辞書があることを確認する必要があります。

15
Adeel Ahmad

Counterモジュールのcollectionsを使用すると、次のようなことができます。

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
3
Chiheb Nexus