python - 在python中设置数据框
问题描述
我通常在 R 中工作,但我正在尝试在 Python 中重新创建一些 R 脚本。我是半成功的,但仍然没有得到我需要的东西——或者没有有效地得到它。我有大量的学生数据集,我正在尝试创建一个新的数据框,只选择特定班级的成绩、gpa 和 ACT 列。在 RI 有
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')]
using '121' 返回除最后 15 行之外的所有内容,仅使用 121 提供最后 15 行。由于某种原因,我假设最后 15 行是不同的类型。有没有办法使该列成为一种类型?在 RI 知道我会使用
as.numeric(data$classnumber)
任何python等价物?
任何帮助深表感谢!
解决方案
据我了解,您面临两个问题
- 将字母等级转换为二进制等级。我假设您已经在 python 中成功创建了一个数据框并导入了“Grades”、“GPA”、“ACT”列。对于您的转换,请使用带有字母等级键的字典,即('A','B','C','D','E')到零和一。
解决方案:使用 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)
- 看起来 classnumber 包含两种不同数据类型的值。一种解决方案是将其转换为单个数据类型,最好是 int
检查当前数据类型
df.dtypes()
将列转换为 int 数据类型
df['classnumber'].astype(int)
PS:这是我在 Stackoverflow 中的第一个答案。欢迎对答案所需的任何提示或编辑。
推荐阅读
- python - Python:从外部()调用内部()
- azure - 是否可以将大型 JSON 数据发送到 IoT 中心?
- bash - 如何使用 linux 命令在现有的制表符分隔文件中附加索引?
- docker - Docker Swarm 不创建容器
- c# - C# 在锁线程之外进行克隆是安全的
- firebase - 当“firebase -serve”正常时,虽然“firebase -deploy”不起作用
- ios - 使用 ARKit 的几个 QR 码
- sharepoint-online - 无法使用 Microsoft Graph API 获取 findMeetingTimes
- android - React-Native Google 日历 Api 错误“未加载 this.gapi”
- perl - 如何为每个子哈希 Perl 增加哈希值