[英]Generate a pandas dataframe from collections.OrderedDict
[英]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.