这可能是一个简单的问题,但我不知道该怎么做。假设有两个变量。
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()
这将给出相同的错误消息。
当前回答
这是因为DataFrame有两个直观的维度——列和行。
您只是使用字典键指定列。
如果您只想指定一维数据,请使用Series!
其他回答
如果你有一个字典,你可以用下面这行代码把它转换成pandas数据帧:
pd.DataFrame({"key": d.keys(), "value": d.values()})
你也可以使用pd.DataFrame.from_records,这在你已经有字典的情况下更方便:
df = pd.DataFrame.from_records([{ 'A':a,'B':b }])
你也可以设置索引,如果你想,通过:
df = pd.DataFrame.from_records([{ 'A':a,'B':b }], index='A')
另一个选项是使用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]}
也许Series会提供你需要的所有函数:
pd.Series({'A':a,'B':b})
DataFrame可以被认为是一个系列的集合,因此你可以:
将多个Series连接到一个数据帧中(如此处所述) 向现有数据帧中添加一个Series变量(示例如下)
你需要提供可迭代对象作为Pandas DataFrame列的值:
df2 = pd.DataFrame({'A':[a],'B':[b]})