python中字典中的变量

时间:2017-03-28 12:57:30

标签: python variables dictionary nan

我正在尝试使用Dictionary创建一个DataFrame,其中我已将变量添加为值..

gpa_min = df_gpa.min()
gpa_Q1 = df_gpa.quantile(0.25)
ratio_gpa = 'gpa ratio Q1/outlier is ', df_gpa.quantile(0.25)/df_gpa.min(), 'should be'
gre_min = df_gre.min()
gre_Q1 = df_gre.quantile(0.25)   
ratio_gre = 'gre ratio Q1/outlier is ', df_gre.quantile(0.25)/df_gre.min()

index = ['gre','gpa']
columns = ['min','Q1','Q1/min']


outlier = pd.DataFrame({"gre": [gre_min,gre_Q1,ratio_gre],
                        "gpa": [gpa_min,gpa_Q1,ratio_gpa]},
                       index = index, columns = columns)
print outlier

这运行时没有错误,但答案是数据框只有'Nan'值...这非常令人困惑,好像我只是调用上面创建的变量('gre_min,gre_Q1,ratio_gre,gpa_min,gpa_Q1, ratio_gpa')我正确地得到了值

我正在使用Python 2.7

谢谢!

1 个答案:

答案 0 :(得分:2)

以这种方式构建一个pandas DataFrame将假设您传入的字典是数据帧的 columns 的字典...但是您后续定义的{{1 }和index与此不一致。熊猫然后试图变得聪明,基本上“插入”您提供的索引/列上的数据。除非它没有(您的'数据'列和'文字'列完全不相关:在下面的示例中,它尝试从列columnsxy获取列{ {1}}和z),它只会吐出gre s

gpa

翻转你的行/列可以获得你想要的东西:

NaN

或者更简单的是,让它从字典键中推断出列名:

In[70]: pd.DataFrame({'gre': [1,2,3], 'gpa': ['a', 'b', 'c']}, index=['gre', 'gpa'], 
         columns=['x', 'y', 'z'])
Out[70]: 
       x    y    z
gre  NaN  NaN  NaN
gpa  NaN  NaN  NaN