这可能是一个简单的问题,但我不知道该怎么做。假设有两个变量。

a = 2
b = 3

我想从这个构建一个数据框架:

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

这会产生一个错误:

ValueError:如果使用所有标量值,则必须传递一个索引

我也试过这个:

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

这将给出相同的错误消息。


当前回答

另一个选项是使用Dictionary Comprehension动态地将标量转换为列表:

df = pd.DataFrame(data={k: [v] for k, v in mydict.items()})

表达式{…}创建一个新的字典,其值是一个包含1个元素的列表。例如:

In [20]: mydict
Out[20]: {'a': 1, 'b': 2}

In [21]: mydict2 = { k: [v] for k, v in mydict.items()}

In [22]: mydict2
Out[22]: {'a': [1], 'b': [2]}

其他回答

首先你需要创造一个熊猫系列。第二步是将pandas系列转换为pandas数据框架。

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

您甚至可以提供列名。

pd.Series(data).to_frame('ColumnName')

最简单的选项ls:

dict  = {'A':a,'B':b}
df = pd.DataFrame(dict, index = np.arange(1) )

你可以试试:

df2 = pd.DataFrame.from_dict({'a':a,'b':b}, orient = 'index')

来自'orient'参数的文档:如果传递的dict的键应该是结果DataFrame的列,则传递' columns '(默认)。否则,如果键应该是行,则传递' index '。

你也可以使用pd.DataFrame.from_records,这在你已经有字典的情况下更方便:

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

你也可以设置索引,如果你想,通过:

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

这是因为DataFrame有两个直观的维度——列和行。

您只是使用字典键指定列。

如果您只想指定一维数据,请使用Series!