在尝试手动计算奇数比率时,我会收到以下信息:
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'
答案 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_'))