这可能是一个简单的问题,但我不知道该怎么做。假设有两个变量。
a = 2
b = 3
我想从这个构建一个数据框架:
df2 = pd.DataFrame({'A':a,'B':b})
这会产生一个错误:
ValueError:如果使用所有标量值,则必须传递一个索引
我也试过这个:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
这将给出相同的错误消息。
这可能是一个简单的问题,但我不知道该怎么做。假设有两个变量。
a = 2
b = 3
我想从这个构建一个数据框架:
df2 = pd.DataFrame({'A':a,'B':b})
这会产生一个错误:
ValueError:如果使用所有标量值,则必须传递一个索引
我也试过这个:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
这将给出相同的错误消息。
当前回答
将“a”和“b”值更改为列表,如下所示:
a = [2]
b = [3]
然后执行如下代码:
df2 = pd.DataFrame({'A':a,'B':b})
df2
你会得到:
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
你可以试着把你的字典包装成一个列表:
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
A B
0 1 2
最简单的选项ls:
dict = {'A':a,'B':b}
df = pd.DataFrame(dict, index = np.arange(1) )
我对numpy数组也有同样的问题,解决方案是将它们压平:
data = {
'b': array1.flatten(),
'a': array2.flatten(),
}
df = pd.DataFrame(data)
另一个选项是使用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]}