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

a = 2
b = 3

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

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

这会产生一个错误:

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

我也试过这个:

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

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


当前回答

错误消息表示,如果您传递标量值,则必须传递一个索引。所以你可以不为列使用标量值——例如使用一个列表:

>>> 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

其他回答

我通常使用以下方法从字典快速创建一个小表。

假设你有一个dict,其中键是文件名,值是对应的文件大小,你可以使用以下代码将它放入一个DataFrame(注意dict上的.items()调用):

files = {'A.txt':12, 'B.txt':34, 'C.txt':56, 'D.txt':78}
filesFrame = pd.DataFrame(files.items(), columns=['filename','size'])
print(filesFrame)

  filename  size
0    A.txt    12
1    B.txt    34
2    C.txt    56
3    D.txt    78

将“a”和“b”值更改为列表,如下所示:

a = [2]
b = [3]

然后执行如下代码:

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

你会得到:

    A   B
0   2   3
import pandas as pd
 a=2
 b=3
dict = {'A': a, 'B': b}

pd.DataFrame(pd.Series(dict)).T  
# *T :transforms the dataframe*

   Result:
    A   B
0   2   3

你需要提供可迭代对象作为Pandas DataFrame列的值:

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

另一个选项是使用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]}