Dataframe 获取Julia数据帧中一行的索引(类似于iterrows?)
在Julia中迭代df时,是否有任何方法可以获得行和行对象的索引?如果没有,即使是找到一行索引的方法也会很好,因为我可以简单地使用Dataframe 获取Julia数据帧中一行的索引(类似于iterrows?),dataframe,indexing,iteration,julia,Dataframe,Indexing,Iteration,Julia,在Julia中迭代df时,是否有任何方法可以获得行和行对象的索引?如果没有,即使是找到一行索引的方法也会很好,因为我可以简单地使用eachrow(),然后找到迭代行的索引,尽管考虑到Julia中不支持命名df的索引,我想这不太可能 对于上下文,我需要索引,以便在df的每一列中找到第一个出现的0,以便用另一个值(比如99)替换它。为此,我希望遍历df中每列的所有行。e、 g.对于df=DataFrame(a=[1,0,2],b=[0,1,0],c=[0,0,4]),代码: for col_inde
eachrow()
,然后找到迭代行的索引,尽管考虑到Julia中不支持命名df的索引,我想这不太可能
对于上下文,我需要索引,以便在df的每一列中找到第一个出现的0,以便用另一个值(比如99)替换它。为此,我希望遍历df中每列的所有行。e、 g.对于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
抱歉,如果这是一个愚蠢的问题,尽管我在网上找不到任何对我的目标有影响的东西。你可以通过使用
enumerate(eachrow(df))
h/t@Antonello获得足够好的东西
根据我在问题中编写的玩具代码,这看起来像:
for col_index in ["a", "b", "c"]
for (row_index, row) in enumerate(eachrow(select(df, :col_index)))
if row[1] == 0
df[row_index, :col_index] = 99
break
end
end
end
rownumber
函数获取从中获取DataFrameRow
的数据帧中的行号DataFrameRow
是可变的,因此您可以编写循环,如下所示:未经测试,但enumerate不能与
一起工作。我不知道enumerate与julia一起工作。。。谢谢省去了我手工写计数器的麻烦,哈哈。
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