这可能是一个简单的问题,但我不知道该怎么做。假设有两个变量。
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()
这将给出相同的错误消息。
当前回答
你可以试试:
df2 = pd.DataFrame.from_dict({'a':a,'b':b}, orient = 'index')
来自'orient'参数的文档:如果传递的dict的键应该是结果DataFrame的列,则传递' columns '(默认)。否则,如果键应该是行,则传递' index '。
其他回答
只要把字典放在一个列表上:
a = 2
b = 3
df2 = pd.DataFrame([{'A':a,'B':b}])
如果你有一个字典,你可以用下面这行代码把它转换成pandas数据帧:
pd.DataFrame({"key": d.keys(), "value": d.values()})
我尝试了转置(),它工作。 缺点:您创建了一个新对象。
testdict1 = {'key1':'val1','key2':'val2','key3':'val3','key4':'val4'}
df = pd.DataFrame.from_dict(data=testdict1,orient='index')
print(df)
print(f'ID for DataFrame before Transpose: {id(df)}\n')
df = df.transpose()
print(df)
print(f'ID for DataFrame after Transpose: {id(df)}')
输出
0
key1 val1
key2 val2
key3 val3
key4 val4
ID for DataFrame before Transpose: 1932797100424
key1 key2 key3 key4
0 val1 val2 val3 val4
ID for DataFrame after Transpose: 1932797125448
```
错误消息表示,如果您传递标量值,则必须传递一个索引。所以你可以不为列使用标量值——例如使用一个列表:
>>> 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
你需要提供可迭代对象作为Pandas DataFrame列的值:
df2 = pd.DataFrame({'A':[a],'B':[b]})