Pandas:使用变量创建数据框,其中包含来自变量名称的一个行名和一个列名

时间:2017-05-22 17:02:04

标签: python r pandas dataframe

假设我在Python中有一些变量。我正在尝试创建一个1行的Pandas数据帧,其中列名称是变量的名称,行中的值来自变量。

例如,如果我有这段代码:

pi  = 3.142
e   = 2.718
phi = 1.618

我想要一个概念上看起来像这样的数据框:

     pi     e      phi
0   3.142   2.718  1.618

我尝试了以下操作,但所有内容都在一列中,并且未添加变量名称:

df = pd.DataFrame(data=[pi, e, phi])
df
#        0
# 0  3.140
# 1  2.718
# 2  1.618

请注意,我正在尝试复制一些旧R代码的行为。

pi  <- 3.142
e   <- 2.718
phi <- 1.618
df  <- data.frame(pi, e, phi)
df
#      pi     e   phi
# 1 3.142 2.718 1.618

4 个答案:

答案 0 :(得分:4)

我认为您正在寻找这种格式:

pd.DataFrame([[pi,e,phi]],columns=['pi','e','phi'])

输出:

      pi      e    phi
0  3.142  2.718  1.618

答案 1 :(得分:1)

您可以使用像这样的列表和字典

df = pd.DataFrame([{'pi':pi, 'e':e, 'phi':phi}])

返回

df
Out[5]: 
       e    phi     pi
0  2.718  1.618  3.142

要保留列顺序,可以使用columns参数:

df = pd.DataFrame([{'pi':pi, 'e':e, 'phi':phi}], columns=['pi', 'e', 'phi'])

返回

df
Out[9]: 
      pi      e    phi
0  3.142  2.718  1.618

其他行会进入单独的词典:

df = pd.DataFrame([{'pi':pi, 'e':e, 'phi':phi}, {'pi':2, 'e':3, 'phi':1}])

答案 2 :(得分:1)

#Reference columns names only once and column order is retained.    
pd.concat([pd.DataFrame(data=[eval(k)],columns=[k]) for k in ['pi','e','phi']],axis=1)
Out[1226]: 
      pi      e    phi
0  3.142  2.718  1.618

答案 3 :(得分:0)

使用datar也很方便,不用传列名:

>>> from datar.tibble import tibble
>>> 
>>> pi  = 3.142
>>> e   = 2.718
>>> phi = 1.618
>>> 
>>> df = tibble(pi, e, phi)
>>> df
         pi         e       phi
  <float64> <float64> <float64>
0     3.142     2.718     1.618

我是 datar 包的作者。如果您有任何问题,请随时提交问题。