Skip to content

Commit

Permalink
Show group values when printing grouped dataframe (#1632)
Browse files Browse the repository at this point in the history
  • Loading branch information
pdeffebach authored and nalimilan committed Dec 26, 2018
1 parent 8489ea1 commit adc1043
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
30 changes: 25 additions & 5 deletions src/groupeddataframe/show.jl
Expand Up @@ -6,31 +6,51 @@ function Base.show(io::IO, gd::GroupedDataFrame;
rowlabel::Symbol = :Row,
summary::Bool = true)
N = length(gd)
keys = join(':' .* string.(names(gd.parent)[gd.cols]), ", ")
keynames = names(gd.parent)[gd.cols]
parent_names = names(gd.parent)
keys = join(':' .* string.(keynames), ", ")

keystr = length(gd.cols) > 1 ? "keys" : "key"
groupstr = N > 1 ? "groups" : "group"
summary && print(io, "$(typeof(gd)) with $N $groupstr based on $keystr: $keys")
if allgroups
for i = 1:N
nrows = size(gd[i], 1)
rows = nrows > 1 ? "rows" : "row"
print(io, "\nGroup $i: $nrows $rows")

identified_groups = [':' * string(parent_names[col], " = ", first(gd[i][col]))
for col in gd.cols]

print(io, "\nGroup $i ($nrows $rows): ")
join(io, identified_groups, ", ")

show(io, gd[i], summary=false,
allrows=allrows, allcols=allcols, rowlabel=rowlabel)
end
else
if N > 0
nrows = size(gd[1], 1)
rows = nrows > 1 ? "rows" : "row"
print(io, "\nFirst Group: $nrows $rows")

identified_groups = [':' * string(parent_names[col], " = ", first(gd[1][col]))
for col in gd.cols]

print(io, "\nFirst Group ($nrows $rows): ")
join(io, identified_groups, ", ")

show(io, gd[1], summary=false,
allrows=allrows, allcols=allcols, rowlabel=rowlabel)
end
if N > 1
print(io, "\n\n")
nrows = size(gd[N], 1)
rows = nrows > 1 ? "rows" : "row"
print(io, "Last Group: $nrows $rows")

identified_groups = [':' * string(parent_names[col], " = ", first(gd[N][col]))
for col in gd.cols]
print(io, "\n")
print(io, "\nLast Group ($nrows $rows): ")
join(io, identified_groups, ", ")

show(io, gd[N], summary=false,
allrows=allrows, allcols=allcols, rowlabel=rowlabel)
end
Expand Down
12 changes: 6 additions & 6 deletions test/show.jl
Expand Up @@ -235,13 +235,13 @@ module TestShow
str = String(take!(io.io))
@test str == """
GroupedDataFrame{DataFrame} with 4 groups based on key: :A
First Group: 1 row
First Group (1 row): :A = 1
│ Row │ A │ B │ C │
│ │ Int64 │ String │ Float32 │
├─────┼───────┼────────┼─────────┤
│ 1 │ 1 │ x" │ 1.0 │
Last Group: 1 row
Last Group (1 row): :A = 4
│ Row │ A │ B │ C │
│ │ Int64 │ String │ Float32 │
├─────┼───────┼────────┼─────────┤
Expand All @@ -250,22 +250,22 @@ module TestShow
str = String(take!(io.io))
@test str == """
GroupedDataFrame{DataFrame} with 4 groups based on key: :A
Group 1: 1 row
Group 1 (1 row): :A = 1
│ Row │ A │ B │ C │
│ │ Int64 │ String │ Float32 │
├─────┼───────┼────────┼─────────┤
│ 1 │ 1 │ x\" │ 1.0 │
Group 2: 1 row
Group 2 (1 row): :A = 2
│ Row │ A │ B │ C │
│ │ Int64 │ String │ Float32 │
├─────┼───────┼─────────────┼─────────┤
│ 1 │ 2 │ ∀ε>0: x+ε>x │ 2.0 │
Group 3: 1 row
Group 3 (1 row): :A = 3
│ Row │ A │ B │ C │
│ │ Int64 │ String │ Float32 │
├─────┼───────┼────────┼─────────┤
│ 1 │ 3 │ z\$ │ 3.0 │
Group 4: 1 row
Group 4 (1 row): :A = 4
│ Row │ A │ B │ C │
│ │ Int64 │ String │ Float32 │
├─────┼───────┼────────┼─────────┤
Expand Down

0 comments on commit adc1043

Please sign in to comment.