Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中设置数据帧_Python_R_Dataframe_Subset - Fatal编程技术网

在python中设置数据帧

在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

我通常在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)
使用“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)