次の形式の辞書オブジェクトがあります。
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を調整します。
col_names = sorted(list(col_dict.iteritems()),key=lambda x:x[0])
列名を変更して設定します
df.columns = Zip(*col_names)[1]
これは、直面したTypeErrorに関するものです。 Pandasドキュメンテーションに従って、from_dictは、orient = 'index'の場合にのみキーワード 'columns'を取ります。