Qu

at

Builtin index · Collections & strings

result = at(t, i) or t.at(i)

Input: t, i · Output: result

What it is

t is a Table; i is a number (0-based row position).

Overloads

One call shape — this function is not overloaded.

CodeInputOutputDescription
result = at(t, i) or t.at(i)
t Tablet is a Table.
i numberi is a number (0-based row position).
result Record or string
Returns a Record: one row of the table by position, always positional even when the table carries a string index.

Examples

From the documentation, and run by the build -- the output and the figure below are what the engine actually produced. Simplest first.

df = DataFrame(id=[1, 2, 3], name=["alu", "steel", "brass"])
print(at(df, 1))                              # {id = 2, name = "steel"}

labeled = index(df, "name")
print(labeled)
grown = insert_row(df, 3, {id=4, name="glass"})
print(grown)
output
{id = 2, name = "steel"}
id  name 
--  -----
 1  alu  
 2  steel
 3  brass
id  name 
--  -----
 1  alu  
 2  steel
 3  brass
 4  glass

from collections-strings

How it works

t.at(i) (§ table row index, 2026-08-26) — ALWAYS positional row access (pandas' .iloc), regardless of whatever custom index by/.index() index is currently set on t. This is the one way to resolve the ambiguity between "index value" and "row position" once a custom index exists: t[key] (bracket syntax, eval_index's Value::Table arm) reads through the custom index when one is set, .at(i) never does.

From the note above this builtin in the interpreter, where the reasoning was written down as it was built.