1. ホーム
  2. スクリプト・コラム
  3. パイソン

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

2022-01-09 13:46:45

質問

を作成する際に Dataframe を、Python を使ってキーと値の形式で書いてください。

data = [{'key':'\[GlobalProgramSizeInThousands\]','value':'1000'},]

コードです。

columnsss = ['key','value'];
query = "select * from bparst_tags where tag_type = 1 ";
result = database.cursor(db.cursors.DictCursor);
result.execute(query);
result_set = result.fetchall();
data = "[";
for row in result_set:
`row["tag_expression"]`)
    data +=  "{'value': %s , 'key': %s }," % ( `row["tag_expression"]`, `row["tag_name"]` )
data += "]" ;    
df = DataFrame(data , columns=columnsss); 

しかし、データを渡すときに DataFrame と表示されます。

pandas.core.common.PandasError: DataFrame constructor not properly called!

を印刷し、同じ値をデータ変数に代入すると、動作します。

どのように解決するのですか?

を提供しています。 文字列 の表現を DataFrame コンストラクタに渡すのであって、dict そのものではありません。そのため、このようなエラーが発生するのです。

だから、もしあなたのコードを使いたいのなら、そうすればいい。

df = DataFrame(eval(data))

しかし、より良いのは、そもそも文字列を作成せず、直接dictに入れることでしょう。大体こんな感じ。

data = []
for row in result_set:
    data.append({'value': row["tag_expression"], 'key': row["tag_name"]})

しかし、おそらくこれさえも必要ないでしょう。 result_set を使用することができます。

  • これを直接DataFrameに提供する。 DataFrame(result_set)
  • を使用するか、パンダの read_sql_query 関数がこれを行います ( ドキュメント を使用します)。