dataframe - 获取 Julia 数据帧中一行的索引(类似于 iterrows?)
问题描述
在 Julia 中迭代 df 时,有什么方法可以获取行和行对象的索引?如果不是,即使是找到行索引的方法也会很棒,因为我可以简单地使用eachrow()
然后找到迭代行的索引,尽管我认为这不太可能考虑到命名 df 的索引在 Julia 中并不真正支持.
对于上下文,我需要索引才能在 df 的每一列中找到第一次出现的 0,以便我可以用另一个值(比如 99)替换它。为此,我想遍历 df 中每一列的所有行。例如对于 df = DataFrame(a = [1, 0, 2], b = [0, 1, 0], c = [0, 0, 4]) 代码:
for col_index in ["a", "b", "c"]
for row in eachrow(select(df, :i))
if row[1] == 0
df[row.index, :i] = 99
break
end
end
end
会将 df 变成
1 99 99
99 1 0
2 0 4
抱歉,如果这是一个愚蠢的问题,尽管我在网上找不到任何与我的任何一个目标有关的东西。
解决方案
- 您可以使用
rownumber
函数来获取从中获取的数据框中的行号DataFrameRow
。 - 由于
DataFrameRow
是可变的,您可以将循环编写为:
for col_index in ["a", "b", "c"]
for row in eachrow(df)
if row[col_index] == 0
row[col_index] = 99
break
end
end
end
- 最后,像这样做你想做的事情会更快:
for col_index in ["a", "b", "c"]
col = df[!, col_index]
loc = findfirst(==(0), col)
isnothing(loc) || (col[loc] = 99)
end
推荐阅读
- python - Owlready2 优化不可用
- java - 在 android 中过滤掉来自 OEM 的不需要的系统应用程序
- c - 系统调用返回值如何传回用户进程?
- python - 在将 django 表单保存到 mssql 数据库时,将数据类型 nvarchar 转换为数字时出错
- r - 在 R 中检索损坏的越南语字符串变量
- c++ - ESP8266 无需网络即可发送和接收数据
- python - numpy.array() 是抽象数据类型吗?
- jdbc - 尝试检索列名,但通过 IBM JDBC 驱动程序从元数据中获取列索引
- javascript - 如何使用 JS 将特定元素从 for 循环中获取到单独的数组中
- ios - 自更新 xcode 以来,资产的本地化不再有效