在python中设置数据帧
我通常在R中工作,但我正在尝试用Python重新创建一些R脚本。我已经取得了半成功,但仍然没有得到我所需要的——或者说没有有效地得到它。我有一个学生数据的大数据集,我试图创建一个新的数据框,只选择一个特定班级的成绩、gpa和ACT列。在R我有在python中设置数据帧,python,r,dataframe,subset,Python,R,Dataframe,Subset,我通常在R中工作,但我正在尝试用Python重新创建一些R脚本。我已经取得了半成功,但仍然没有得到我所需要的——或者说没有有效地得到它。我有一个学生数据的大数据集,我试图创建一个新的数据框,只选择一个特定班级的成绩、gpa和ACT列。在R我有 data = read.csv('path.csv', na='NULL') dat <- subset(data, classnumber == 121 & grade != 'W' & grade != 'P') convert
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)
使用“121”将返回除最后15行以外的所有内容,而仅使用121将提供最后15行。由于某种原因,我假设最后15行是不同的类型。有没有办法让这个专栏成为一个单一的类型?
在R中,我知道我会使用
as.numeric(data$classnumber)
有类似python的吗
非常感谢您的帮助 据我了解,您面临两个问题 将字母等级转换为二进制等级。 我假设您已经成功地用python创建了一个数据框架,并导入了列Grades、GPA和ACT。为了进行转换,请使用键为字母等级的词典,即“a”、“B”、“C”、“D”、“e”到0和1。 解决方案:使用映射功能或替换
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)
看起来classnumber包含两种不同数据类型的值。一种解决方案是将其转换为单个数据类型,最好是int
检查当前数据类型
df.dtypes
将列转换为int数据类型
df['classnumber'].astype(int)
这是我在Stackoverflow中的第一个答案。欢迎对答案进行任何提示或编辑。谢谢,这正是我所需要的。第一个答案很好!非常感谢。这让我有动力为社区做更多的工作
df['classnumber'].astype(int)