能否在DataFramesMeta宏中访问行索引?含代码场景的技术问询
DataFramesMeta宏中行索引访问问题解答
问题一:能否在DataFramesMeta宏内部访问行索引?
可以,但无法直接通过原生行索引的形式访问,需通过两种常用方式实现:
- 提前将行索引转换为DataFrame的普通列:比如执行
df[!, :row_idx] = axes(df, 1),之后在@with宏内直接用:row_idx调用索引值。 - 使用
@transform等宏配合索引方法:无需额外列,直接在宏内通过eachindex(:列名)的形式获取对应行的索引。
问题二:能否在给定代码片段中访问current_row_index?
你提供的代码里current_row_index属于自定义变量,@with宏默认不识别,直接运行会报错。要实现类似逻辑,可参考两种修改方案:
方案一:添加索引列后调用
# 先为DataFrame新增行索引列 df[!, :current_row_index] = axes(df, 1) @with df begin fn.(:col, :current_row_index) end
方案二:用@transform直接关联索引
@transform(df, :result_col = fn.(:col, eachindex(:col)))
如果需要逐行处理并获取索引,也可以用enumerate(eachrow(df))配合循环,但上述两种方式更贴合DataFramesMeta的使用风格。
内容的提问来源于stack exchange,提问作者elemental
相关产品推荐
相关产品推荐

