pandas.DataFrame.from_dict的使用介紹


Pandas幾個星期不用,差不多又快全部忘記了。便於記憶,還是寫一些痕跡,加深記憶。

參考鏈接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html

這是一個類方法,創建一個df對象。

Parameters

data dict

Of the form {field : array-like} or {field : dict}.

orient {‘columns’, ‘index’}, default ‘columns’

The “orientation” of the data. If the keys of the passed dict should be the columns of the resulting DataFrame, pass ‘columns’ (default). Otherwise if the keys should be rows, pass ‘index’.

dtype dtype, default None

Data type to force, otherwise infer.

columns list, default None

Column labels to use when orient='index'. Raises a ValueError if used with orient='columns'.

對於參數的設置,datadict在默認下,傳入參數為{key: {key: value}}或者{key:[...]}

這樣的情況下,使用默認的orient屬性,key將當做columns使用。

In [22]: mydict = {'name':{1:'sidian'},'age':{2:'18'}}                                    

In [23]: pd.DataFrame.from_dict(mydict)                                                   
Out[23]: 
     name  age
1  sidian  NaN
2     NaN   18

  這是使用了字典嵌套字典的寫法,外層字典的key為columns,values內的dict的keys為rows的名稱,缺省的值用了NAN

當修改orient的默認值'columns'為'index',內部的key為columns,外部的key為rows

In [25]: pd.DataFrame.from_dict(mydict,orient='index')                                                          
Out[25]: 
           1    2
name  sidian  NaN
age      NaN   18

  當時使用字典嵌套字典的時候,設置了orient='index'后,通過設置columns只會顯式,在原df中已經存在的columns

In [29]: pd.DataFrame.from_dict(mydict,orient='index', columns=[2,3])                                           
Out[29]: 
      2    3
age  18  NaN

In [30]: pd.DataFrame.from_dict(mydict,orient='index', columns=[3,4])                                           
Out[30]: 
Empty DataFrame
Columns: [3, 4]
Index: []

  pd.DataFrame.from_dict的類方法在使用字典套字典的形式還是比較特別的,下面使用鏈接中的案例key與list的形式。

In [32]: data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}                                          

In [33]: pd.DataFrame.from_dict(data)                                                                           
Out[33]: 
   col_1 col_2
0      3     a
1      2     b
2      1     c
3      0     d

  這個rows的編號,自動生成,keys為columns的名稱。

設置orient='index',key將變成rows的index,rows會變成默認的0,1,2,3...

In [34]: pd.DataFrame.from_dict(data,orient='index')                                                            
Out[34]: 
       0  1  2  3
col_1  3  2  1  0
col_2  a  b  c  d

  通過設置columns,來替換顯式的默認columns的名稱.

In [35]: pd.DataFrame.from_dict(data,orient='index',columns=list('abcd'))                                       
Out[35]: 
       a  b  c  d
col_1  3  2  1  0
col_2  a  b  c  d

  

工作中碰到,就是一個普通的dict,也就是說value是不可迭代的對象,必須設置orient='index',要不然會報錯,也就是dict的key不能用於columns。

In [41]: new_dict                                                                                               
Out[41]: {'name': 'sidian', 'age': 18}

In [42]: pd.DataFrame.from_dict(new_dict, orient='index')                                                       
Out[42]: 
           0
name  sidian
age       18

In [43]: pd.DataFrame.from_dict(new_dict, orient='index', columns=['info'])                                     
Out[43]: 
        info
name  sidian
age       18

In [44]:         

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM