根据变量中的值构造pandas数据帧会给出“ValueError:如果使用所有标量值,则必须传递索引”

2021-01-26 01:11:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这也许是个简单的问题,但我不知道怎么做。假设我有两个变量,如下所示。

a = 2
b = 3

我想用这个构造一个数据帧:

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

这将生成错误:

ValueError: If using all scalar values, you must pass an index

我也试过:

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

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

3条回答
网友
1楼 ·

错误消息说,如果要传递标量值,则必须传递索引。因此,不能对列使用标量值,例如使用列表:

>>> 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
网友
2楼 ·

你需要先创建一个熊猫系列。第二步是将pandas系列转换为pandas数据帧。

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

您甚至可以提供列名。

pd.Series(data).to_frame('ColumnName')
网友
3楼 ·

您还可以使用pd.DataFrame.from_records,这在您手头有字典时更方便:

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

如果需要,还可以通过以下方式设置索引:

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

相关问题