Hi,
I am surprised this is complicated…or maybe my brain is out… Notebook here:
I understand the problem is related to this previous question here, but I can’t make it work.
Hi,
I am surprised this is complicated…or maybe my brain is out… Notebook here:
I understand the problem is related to this previous question here, but I can’t make it work.
Here you go:
dt
.groupby("island")
.rollup({
count: d => op.count(),
culmen_min: d => op.min(d.culmen_depth_mm),
culmen_max: d => op.max(d.culmen_depth_mm),
}).view({format: {
culmen_min: {digits: 2},
culmen_max: {digits: 2}
}})
.view
is an Observable-only table function that’s defined in Arquero / UW Interactive Data Lab | Observable. It passed options through to .toHTML()
, which accepts both maxdigits
and a more specific per-column digits
option.
I did not discover these options until after I had dug through the code and knew what to look for, though.
Thanks!
What I actually wanted to do (sorry for being not clear) is to use Inputs.table()
to show the resulting table (I like Inputs.table()
more than arquero’s view()
). i.e.:
Create new df:
dt_new = dt
.groupby("island")
.rollup({
count: d => op.count(),
culmen_min: d => Math.round(op.min(d.culmen_depth_mm) * 100) / 100,
culmen_max: d => (Math.round(op.max(d.culmen_depth_mm) * 100) / 100)
})
And then show in table:
Inputs.table(dt_new)
The table look like this:
I guess the question now is, can I format Inputs.table()
so I have the 2 digits here?
Apologies for all the confusion.
You can provide format
callbacks for each column to an Inputs.table(). Here I’ve also added two options to make the table fit its contents (instead of always spanning the entire width):
Inputs.table(dt_new, {
layout: "auto",
maxWidth: "max-content",
format: {
culmen_min: d => d.toFixed(2),
culmen_max: d => d.toFixed(2),
}
})
Thank you!