web-dev-qa-db-ja.com

パンダ:dictからDataFrameに名前付き列を作成します

次の形式の辞書オブジェクトがあります。

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'がありました

27
anonuser0428

アイテムを反復処理できます。

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
28
Andy Hayden

ドキュメントと同じ機能を取得し、コードの回避策を使用しないようにするには、最新バージョンの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()コードがエラーなく機能しました。コードの変更は必要ありません。

9
cfelix

バージョン0.23.0以降 では、from_dictcolumnsパラメーターを指定できます。

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'])

注: この同様の質問 についても同様に回答しました。

4
Ninjakannon

これを行う:

データフレームを作成する

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]
0
meyerson

これは、直面したTypeErrorに関するものです。 Pandasドキュメンテーションに従って、from_dictは、orient = 'index'の場合にのみキーワード 'columns'を取ります。

0
Karthik Sunil