我通常在R中工作,但是我试图在Python中重新创建一些R脚本。我一直在半神半熟,但仍然没有得到我所需要的东西-还是没有有效地得到它。我有大量的学生数据集,我正在尝试创建一个新的数据框,只为特定班级选择成绩,gpa和ACT列。在R中,我有
data = read.csv('path.csv', na='NULL')
dat <- subset(data, classnumber == 121 & grade != 'W' & grade != 'P')
convert_grades <- function(x) {
A <- factor(x, levels=c("A","B","C","D","F"))
values <- c(1,1,1,0,0)
values[A]
}
dataset = data.frame(convert_grades(dat$grade), dat$GPA, dat$act)
尝试将其转换为python时遇到两个问题
1)我无法将字母等级转换为0或1。我已经能够根据字母在字母中的位置将其转换为数值,但不能转换为0或1格式。
2)当我根据类编号在python中将数据子集化时,必须使用
dat=dataset.loc[(data.classnumber == 121) | (data.classnumber == '121')]
使用'121'返回除最后15行以外的所有内容,仅使用121提供那些最后15行。由于某种原因,我认为最后15行是不同的类型。有没有办法使此列成为单一类型? 在R中,我知道我会使用
as.numeric(data$classnumber)
是否有与之等效的python?
非常感谢您的帮助!
答案 0 :(得分:1)
据我了解,您面临两个问题
解决方案:使用map()函数或replace()
convert ={'A' : 1, 'B' : 1, 'C' : 1, 'D' : 0, 'E' : 0}
将等级映射为0和1,将未定义的值映射为NaN
df['Grades'] = df['Grades'].map(convert)
在“成绩”列下将值替换为1和0,而不会影响未定义的成绩
df.replace(convert,inplace=True)
检查当前数据类型
df.dtypes()
将列转换为int数据类型
df['classnumber'].astype(int)
P.S:这是我在Stackoverflow中的第一个答案。欢迎对答案进行任何提示或修改。