![](/img/trans.png)
[英]Create a pandas Dataframe from a nested dict with row indices as dict keys and a dict with different columns per key
[英]Pandas: create named columns in DataFrame from dict
我有一個表格的字典對象:
my_dict = {id1: val1, id2: val2, id3: val3, ...}
我想將其創建為一個DataFrame,我想在其中列出2列'business_id'和'business_code'。
我試過了:
business_df = DataFrame.from_dict(my_dict,orient='index',columns=['business_id','business_code'])
但是它說from_dict
沒有接受一個列參數。
TypeError:from_dict()得到一個意外的關鍵字參數'columns'
您可以遍歷項目:
In [11]: pd.DataFrame(list(my_dict.iteritems()),
columns=['business_id','business_code'])
Out[11]:
business_id business_code
0 id2 val2
1 id3 val3
2 id1 val1
要獲得與文檔相同的功能並避免使用代碼解決方法,請確保您使用的是最新版本的Pandas。 我最近在從Pandas教程運行一行代碼時遇到了同樣的錯誤:
pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]),orient='index', columns=['one', 'two', 'three'])
我檢查了Pandas的版本,發現當版本23可用時我運行的是22版。
import pandas as pd
pd.__version__
Out[600]: '0.22.0'
我用pip升級了:
c:\pip install --upgrade pandas
我確認我的版本更新為23,並且相同的from_dict()代碼正常工作。 無需修改代碼。
從版本0.23.0開始 ,您可以在from_dict
指定columns
參數:
my_dict = {id1: val1, id2: val2, id3: val3, ...}
prepared_dict = {i: x for i, x in enumerate(my_dict.items())}
df = pd.DataFrame.from_dict(prepared_dict, orient='index', columns=['business_id', 'business_code'])
做這個:
創建數據框
df = pd.DataFrame(data_as_2d_ndarray)
從字典中創建列名的排序列表 - 根據需要調整鍵karg從dict中獲取排序值,顯然數據必須具有一致的形狀的字典
col_names = sorted(list(col_dict.iteritems()),key=lambda x:x[0])
重塑並設置列名稱
df.columns = zip(*col_names)[1]
這與您面臨的TypeError有關。 根據Pandas文檔,只有當orient ='index'時,from_dict才會使用關鍵字'columns'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.