582

これは簡単な質問かもしれませんが、これを行う方法がわかりません。次のように2つの変数があるとしましょう。

a = 2
b = 3

これからDataFrameを構築したい:

df2 = pd.DataFrame({'A':a,'B':b})

これにより、エラーが発生します。

ValueError: すべてのスカラー値を使用する場合は、インデックスを渡す必要があります

私もこれを試しました:

df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()

これにより、同じエラー メッセージが表示されます。

4

23 に答える 23

883

エラー メッセージは、スカラー値を渡す場合はインデックスを渡す必要があることを示しています。したがって、列にスカラー値を使用することはできません。たとえば、リストを使用します。

>>> df = pd.DataFrame({'A': [a], 'B': [b]})
>>> df
   A  B
0  2  3

またはスカラー値を使用してインデックスを渡します。

>>> df = pd.DataFrame({'A': a, 'B': b}, index=[0])
>>> df
   A  B
0  2  3
于 2013-07-24T16:49:48.613 に答える
97

pd.DataFrame.from_recordsすでに辞書を持っている場合は、どちらが便利かを使用することもできます。

df = pd.DataFrame.from_records([{ 'A':a,'B':b }])

必要に応じて、次の方法でインデックスを設定することもできます。

df = pd.DataFrame.from_records([{ 'A':a,'B':b }], index='A')
于 2016-03-13T13:26:17.427 に答える
72

最初に pandas シリーズを作成する必要があります。2 番目のステップは、pandas シリーズを pandas データフレームに変換することです。

import pandas as pd
data = {'a': 1, 'b': 2}
pd.Series(data).to_frame()

列名を指定することもできます。

pd.Series(data).to_frame('ColumnName')
于 2017-09-12T10:58:47.327 に答える
15

多分シリーズはあなたが必要とするすべての機能を提供するでしょう:

pd.Series({'A':a,'B':b})

DataFrame は Series のコレクションと考えることができるため、次のことができます。

  • 複数のシリーズを 1 つのデータ フレームに連結します (ここで説明されているように)

  • シリーズ変数を既存のデータ フレームに追加します (例はこちら) 。

于 2016-04-16T22:43:55.003 に答える
10

Pandas DataFrame 列の値としてイテラブルを提供する必要があります。

df2 = pd.DataFrame({'A':[a],'B':[b]})
于 2013-07-24T16:49:49.647 に答える
2

これは、DataFrame には、列行という 2 つの直感的な次元があるためです。

辞書キーを使用して列を指定しているだけです。

1 次元のデータのみを指定する場合は、シリーズを使用してください。

于 2017-07-22T13:53:46.923 に答える
0

これを試すことができます: df2 = pd.DataFrame.from_dict({'a':a,'b':b}, orient = 'index')

于 2020-08-15T02:52:44.940 に答える
-2

辞書がある場合は、次のコード行で pandas データ フレームに変換できます。

pd.DataFrame({"key": d.keys(), "value": d.values()})
于 2016-04-08T14:53:03.713 に答える