1. ホーム
  2. python

[解決済み】DataFrame のコンストラクタが正しく呼び出されない

2022-01-26 09:41:29

質問

Pythonでdataframeを作ろうとしているのですが、質問文にあるようなエラーが発生します。

  # pre processing to get G-Test score
    def G_test(tokens, types):
        tokens_cnt = tokens.value_counts().astype(float)
        types_cnt = types.value_counts().astype(float)
        total_cnt = float(sum(tokens_cnt))
    
        # calculate each token counts
        token_cnt_table = collections.defaultdict(lambda : collections.Counter())
        for _tokens, _types in zip(tokens.values, types.values):
            token_cnt_table[_tokens][_types] += 1
    

 tc_dataframe = pd.DataFrame(token_cnt_table.values(), index=token_cnt_table.keys())

        tc_dataframe.fillna(0, inplace=True)
        for column in tc_dataframe.columns.tolist():
            tc_dataframe[column+'_exp'] = (tokens_cnt / total_cnt) * types_cnt[column]
            c_dataframe[column+'_GTest'] = [G_test_score(tkn_count, exp) for tkn_count, exp in zip(tc_dataframe[column], tc_dataframe[column+'_exp'])]
            return tc_dataframe

解決するには?

その {コード のコンストラクタは、データとして辞書ビューを受け付けません。に変換することができます。 pd.DataFrame 代わりに 以下は最小限の例です。

list

ドキュメントにはこう書かれています。

データ : numpyのndarray(構造化または均質化)、dict、またはDataFrame

これに相当するのは d = {'a': 1, 'b': 2, 'c': 3} df = pd.DataFrame(d.values(), index=d.keys()) # PandasError: DataFrame constructor not properly called! df = pd.DataFrame(list(d.values()), index=d.keys()) # Works! は、辞書を直接受け取ります。

pd.DataFrame.from_dict