这可能是一个简单的问题,但我不知道该怎么做。假设有两个变量。
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()
这将给出相同的错误消息。
当前回答
首先你需要创造一个熊猫系列。第二步是将pandas系列转换为pandas数据框架。
import pandas as pd
data = {'a': 1, 'b': 2}
pd.Series(data).to_frame()
您甚至可以提供列名。
pd.Series(data).to_frame('ColumnName')
其他回答
这是因为DataFrame有两个直观的维度——列和行。
您只是使用字典键指定列。
如果您只想指定一维数据,请使用Series!
你可以试着把你的字典包装成一个列表:
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
A B
0 1 2
你也可以使用pd.DataFrame.from_records,这在你已经有字典的情况下更方便:
df = pd.DataFrame.from_records([{ 'A':a,'B':b }])
你也可以设置索引,如果你想,通过:
df = pd.DataFrame.from_records([{ 'A':a,'B':b }], index='A')
我对numpy数组也有同样的问题,解决方案是将它们压平:
data = {
'b': array1.flatten(),
'a': array2.flatten(),
}
df = pd.DataFrame(data)
将“a”和“b”值更改为列表,如下所示:
a = [2]
b = [3]
然后执行如下代码:
df2 = pd.DataFrame({'A':a,'B':b})
df2
你会得到:
A B
0 2 3