手计算奇数比率

时间:2017-12-10 18:15:56

标签: python-2.7

在尝试手动计算奇数比率时,我会收到以下信息:

TypeError: Cannot cast array data from dtype('float64') to dtype('S32') according to the rule 'safe'

到目前为止,我已阅读数据集:

df_raw = pd.read_csv("../assets/dataset/admissions.csv")

创建频率表:

admit = df_raw['admit']
gre = df_raw['gre']
gpa = df_raw['gpa']
prestige = df_raw['prestige']
pd.crosstab(admit, [gre, gpa, prestige], rownames=['Admit'], colnames=['GRE', 'GPA', 'Prestige'])

获得声望的假人:

dummy_ranks = pd.get_dummies(prestige)

现在运行之后,我收到错误:

cols_to_keep = ['admit', 'gre', 'gpa']
handCalc = df[cols_to_keep].join(dummy_ranks.ix[:, 'prestige_1':])
print handCalc.head()

有关我可能出错的地方的任何想法?

TypeError: Cannot cast array data from dtype('float64') to dtype('S32') according to the rule 'safe'

1 个答案:

答案 0 :(得分:0)

在创建虚拟变量时尝试指定前缀,就像现在编写的那样,当您创建虚拟变量时,列名称将成为声望列中的类别(1.0,2.0,3.0,4.0)

但是在你的handcalc变量创建中,你引用了一个名为prestige_1的列并且它不存在。

更新 dummy_ranks = pd.get_dummies(prestige)

dummy_ranks=(pd.get_dummies(df['prestige'], prefix='prestige_'))