簡體   English   中英

從orderdict生成熊貓數據框?

[英]Generate a pandas dataframe from ordereddict?

我正在嘗試從ordereddict創建一個熊貓數據框,以保留值的順序。 但是由於某種原因,在創建數據框后,字段又被弄亂了。

以下是命令字典的列表:

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

現在,我應該如何從中創建一個熊貓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)

隨時提出任何其他問題。

按照答案,您需要顯式指定列順序:

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

當然,首先,您需要確保您已訂購字典。

您可以使用來自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
df = pd.DataFrame(orderedDictList, columns=orderedDictList.keys())

這不起作用,因為列表沒有鍵值對。

您不需要指定列順序,因為orderedDicts會固有地保留列順序。 以下將起作用:

df = pd.DataFrame(orderedDictList)

在@AdeelAhmad回答之后,我需要從一個OrderDict獲取列:

df = pd.DataFrame(orderedDictList, columns=orderedDictList[0].keys())

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM