从variables中的值构造pandas DataFrame

这可能是一个简单的问题,但我不知道如何做到这一点。 可以说,我有两个variables如下。

a = 2 b = 3 

我想从这个构造一个DataFrame:

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

这会产生一个错误:

ValueError:如果使用所有标量值,则必须传递一个索引

我也试过这个:

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

这给出了相同的错误信息。

错误消息说如果你传递标量值,你必须传递一个索引。 所以你可以不使用标量值的列 – 例如使用列表:

 >>> df = pd.DataFrame({'A': [a], 'B': [b]}) >>> df AB 0 2 3 

或使用标量值并传递索引:

 >>> df = pd.DataFrame({'A': a, 'B': b}, index=[0]) >>> df AB 0 2 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') 

您需要提供迭代作为Pandas DataFrame列的值:

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

也许系列将提供您需要的所有function:

 pd.Series({'A':a,'B':b}) 

DataFrame可以被认为是一系列的集合,因此您可以:

  • 将多个串联连接成一个dataframe(如此处所述)

  • 在现有数据框中添加一个Seriesvariables( 这里是示例 )

你需要先创build一个pandas系列。 第二步是将pandas系列转换为pandas数据框。

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

如果你有一本字典,可以用下面这行代码把它变成一个pandas数据框:

 pd.DataFrame({"key": d.keys(), "value": d.values()}) 

这是因为DataFrame有两个直观的维度 – 列行。

您只是使用字典键指定列。

如果你只想指定一维数据,使用一个系列!