我正在尝试使用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
谢谢!
答案 0 :(得分:2)
以这种方式构建一个pandas DataFrame
将假设您传入的字典是数据帧的 columns 的字典...但是您后续定义的{{1 }和index
与此不一致。熊猫然后试图变得聪明,基本上“插入”您提供的索引/列上的数据。除非它没有(您的'数据'列和'文字'列完全不相关:在下面的示例中,它尝试从列columns
,x
和y
获取列{ {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