python 中字典中的变量
variables in dictionaries in python
我正在尝试使用字典创建 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
谢谢!
以这种方式构建 pandas DataFrame
将假定您传入的字典是数据框的 列 的字典...但是您随后对 index
和 columns
的定义与此不一致。 Pandas 然后尝试变得聪明,基本上 'interpolates' 您提供的数据 indices/columns。除了因为它有 none(你的 'data' 列和 'textual' 列完全不相关:在我下面的例子中,它试图获取列 x
、y
和z
来自 gre
和 gpa
列),它只是吐出 NaN
s
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
翻转你的 rows/columns 得到你想要的:
In[71]: pd.DataFrame({'gre': [1,2,3], 'gpa': ['a', 'b', 'c']}, columns=['gre', 'gpa'],
index=['x', 'y', 'z'])
Out[71]:
gre gpa
x 1 a
y 2 b
z 3 c
或者更简单,让它从字典键中推断列名:
In[72]: pd.DataFrame({'gre': [1,2,3], 'gpa': ['a', 'b', 'c']}, index=['x', 'y', 'z'])
Out[72]:
gpa gre
x a 1
y b 2
z c 3
我正在尝试使用字典创建 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
谢谢!
以这种方式构建 pandas DataFrame
将假定您传入的字典是数据框的 列 的字典...但是您随后对 index
和 columns
的定义与此不一致。 Pandas 然后尝试变得聪明,基本上 'interpolates' 您提供的数据 indices/columns。除了因为它有 none(你的 'data' 列和 'textual' 列完全不相关:在我下面的例子中,它试图获取列 x
、y
和z
来自 gre
和 gpa
列),它只是吐出 NaN
s
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
翻转你的 rows/columns 得到你想要的:
In[71]: pd.DataFrame({'gre': [1,2,3], 'gpa': ['a', 'b', 'c']}, columns=['gre', 'gpa'],
index=['x', 'y', 'z'])
Out[71]:
gre gpa
x 1 a
y 2 b
z 3 c
或者更简单,让它从字典键中推断列名:
In[72]: pd.DataFrame({'gre': [1,2,3], 'gpa': ['a', 'b', 'c']}, index=['x', 'y', 'z'])
Out[72]:
gpa gre
x a 1
y b 2
z c 3