Generate a pandas dataframe from ordereddict?

后端 未结 4 1666
甜味超标
甜味超标 2020-12-09 09:51

I am trying to create a pandas dataframe from an ordereddict to preserve the order of the values. But for some reason after creating the dataframe the fields are messed up a

相关标签:
4条回答
  • 2020-12-09 10:00

    Following @AdeelAhmad answer I needed to get the columns from one OrderDict:

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

    Hope it helps

    0 讨论(0)
  • 2020-12-09 10:14

    Following this answer, you need to explicitly specify your column order:

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

    Of course, first you need to ensure that you have an ordered dictionary.

    0 讨论(0)
  • df = pd.DataFrame(orderedDictList, columns=orderedDictList.keys())
    

    This does not work because lists do not have key value pairs.

    You do not need to specify column order because orderedDicts will preserve the column order inherently. The following will work:

    df = pd.DataFrame(orderedDictList)
    
    0 讨论(0)
  • 2020-12-09 10:26

    You can do something like this using Counter from collections module:

    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)
    

    Output:

         key_b    key_a
    0  value_b  value_a
    1  value_d  value_c
    
    0 讨论(0)
提交回复
热议问题