Files
2026-02-08 11:20:43 -10:00

8295 lines
519 KiB
Plaintext
Vendored

{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Quickstart"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "To start working with Kotlin DataFrame in a notebook, run the cell with the next code:"
},
{
"cell_type": "code",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-05-27T17:21:01.955626Z",
"start_time": "2025-05-27T17:21:00.796448Z"
}
},
"source": [
"%useLatestDescriptors\n",
"%use dataframe"
],
"outputs": [],
"execution_count": 9
},
{
"metadata": {},
"cell_type": "markdown",
"source": "This will load all necessary DataFrame dependencies (of the latest stable version) and all imports, as well as DataFrame rendering. Learn more [here](https://kotlin.github.io/dataframe/gettingstartedkotlinnotebook.html#integrate-kotlin-dataframe)."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Read DataFrame"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Kotlin DataFrame supports all popular data formats, including CSV, JSON and Excel, as well as reading from various databases. Read a CSV with the \"Jetbrains Repositories\" dataset into `df` variable:"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:02.672893Z",
"start_time": "2025-05-27T17:21:01.959987Z"
}
},
"cell_type": "code",
"source": [
"val df = DataFrame.readCsv(\n",
" \"https://raw.githubusercontent.com/Kotlin/dataframe/master/data/jetbrains_repositories.csv\"\n",
")"
],
"outputs": [],
"execution_count": 10
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Display And Explore"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "To display your dataframe as a cell output, place it in the last line of the cell:"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:02.809925Z",
"start_time": "2025-05-27T17:21:02.676858Z"
}
},
"cell_type": "code",
"source": "df",
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_13()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_13\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394984&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;... showing only top 20 of 562 rows&lt;&sol;p&gt;&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 562, columnsCount = 5&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;full_name: String&bsol;&quot;&gt;full_name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;JPS&quot;,&quot;JetBrains&sol;YouTrackSharp&quot;,&quot;JetBrains&sol;colorSchemeTool&quot;,&quot;JetBrains&sol;ideavim&quot;,&quot;JetBrains&sol;youtrack-vcs-hooks&quot;,&quot;JetBrains&sol;youtrack-rest-ruby-library&quot;,&quot;JetBrains&sol;emacs4ij&quot;,&quot;JetBrains&sol;codereview4intellij&quot;,&quot;JetBrains&sol;teamcity-nuget-support&quot;,&quot;JetBrains&sol;Grammar-Kit&quot;,&quot;JetBrains&sol;intellij-starteam-plugin&quot;,&quot;JetBrains&sol;la-clojure&quot;,&quot;JetBrains&sol;MPS&quot;,&quot;JetBrains&sol;intellij-community&quot;,&quot;JetBrains&sol;TeamCity.ServiceMessages&quot;,&quot;JetBrains&sol;youtrack-rest-python-library&quot;,&quot;JetBrains&sol;intellij-scala&quot;,&quot;JetBrains&sol;teamcity-messages&quot;,&quot;JetBrains&sol;teamcity-cpp&quot;,&quot;JetBrains&sol;kotlin&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;html_url: URL&bsol;&quot;&gt;html_url&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;JPS' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;JPS&lt;&sol;a&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;YouTrackSharp&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;YouTrackSharp' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;YouTrack&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;colorSchemeTool&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;colorSchemeTool' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;colorSch&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;ideavim' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;ideavim&lt;&sol;a&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack-vcs-hooks&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack-vcs-hooks' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack-rest-ruby-library&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack-rest-ruby-library' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;emacs4ij' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;emacs4ij&lt;&sol;a&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;codereview4intellij&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;codereview4intellij' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;coderevi&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity-nuget-support&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity-nuget-support' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;Grammar-Kit' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;Grammar-Kit&lt;&sol;a&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;intellij-starteam-plugin&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;intellij-starteam-plugin' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;la-clojure' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;la-clojure&lt;&sol;a&gt;&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;MPS' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;MPS&lt;&sol;a&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;intellij-community&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;intellij-community' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;TeamCity.ServiceMessages&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;TeamCity.ServiceMessages' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;TeamCity&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack-rest-python-library&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack-rest-python-library' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;youtrack&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;intellij-scala&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;intellij-scala' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity-messages&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity-messages' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity-cpp&bsol;&quot;&gt;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity-cpp' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;teamcity&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;a&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;kotlin' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;kotlin&lt;&sol;a&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;stargazers_count: Int&bsol;&quot;&gt;stargazers_count&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;23&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;115&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;290&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;8&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;47&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;11&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;41&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;534&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;218&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;118&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;125&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;27&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: String&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]&bsol;&quot;&gt;[jetbrains, jetbrains-youtrack, youtr&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]&bsol;&quot;&gt;[ideavim, intellij, intellij-platform&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[nuget, nuget-feed, teamcity, teamcity-plugin]&bsol;&quot;&gt;[nuget, nuget-feed, teamcity, teamcit&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[domain-specific-language, dsl]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[code-editor, ide, intellij, intellij-community, intellij-platform]&bsol;&quot;&gt;[code-editor, ide, intellij, intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[c-sharp, teamcity, teamcity-service-messages]&bsol;&quot;&gt;[c-sharp, teamcity, teamcity-service-&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[intellij-idea, intellij-plugin, scala]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]&bsol;&quot;&gt;[compiler, gradle-plugin, intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;watchers: Int&bsol;&quot;&gt;watchers&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;23&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;115&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;290&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;8&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;47&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;11&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;41&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;534&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;218&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;118&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;125&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;27&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394984, rootId: -1476394984, totalRows: 562 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394984) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_13() {\n",
" let elem = document.getElementById(\"iframe_out_13\");\n",
" resize_iframe_out_13(elem);\n",
" setInterval(resize_iframe_out_13, 5000, elem);\n",
" }\n",
" function resize_iframe_out_13(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394983\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">full_name</th><th class=\"bottomBorder\" style=\"text-align:left\">html_url</th><th class=\"bottomBorder\" style=\"text-align:left\">stargazers_count</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">watchers</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/JPS</td><td style=\"vertical-align:top\">https://github.com/JetBrains/JPS</td><td style=\"vertical-align:top\">23</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">23</td></tr><tr><td style=\"vertical-align:top\">JetBrains/YouTrackSharp</td><td style=\"vertical-align:top\">https://github.com/JetBrains/YouTrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">115</td><td style=\"vertical-align:top\">[jetbrains, jetbrains-youtrack, youtr<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">115</td></tr><tr><td style=\"vertical-align:top\">JetBrains/colorSchemeTool</td><td style=\"vertical-align:top\">https://github.com/JetBrains/colorSch<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">290</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">290</td></tr><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">https://github.com/JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">6120</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-vcs-hooks</td><td style=\"vertical-align:top\">https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">5</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">5</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-ruby-library</td><td style=\"vertical-align:top\">https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">8</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">8</td></tr><tr><td style=\"vertical-align:top\">JetBrains/emacs4ij</td><td style=\"vertical-align:top\">https://github.com/JetBrains/emacs4ij</td><td style=\"vertical-align:top\">47</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">47</td></tr><tr><td style=\"vertical-align:top\">JetBrains/codereview4intellij</td><td style=\"vertical-align:top\">https://github.com/JetBrains/coderevi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">11</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">11</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-nuget-support</td><td style=\"vertical-align:top\">https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">41</td><td style=\"vertical-align:top\">[nuget, nuget-feed, teamcity, teamcit<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">41</td></tr><tr><td style=\"vertical-align:top\">JetBrains/Grammar-Kit</td><td style=\"vertical-align:top\">https://github.com/JetBrains/Grammar-Kit</td><td style=\"vertical-align:top\">534</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">534</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-starteam-plugin</td><td style=\"vertical-align:top\">https://github.com/JetBrains/intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">6</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">6</td></tr><tr><td style=\"vertical-align:top\">JetBrains/la-clojure</td><td style=\"vertical-align:top\">https://github.com/JetBrains/la-clojure</td><td style=\"vertical-align:top\">218</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">218</td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">https://github.com/JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td><td style=\"vertical-align:top\">1241</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">https://github.com/JetBrains/intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">12926</td></tr><tr><td style=\"vertical-align:top\">JetBrains/TeamCity.ServiceMessages</td><td style=\"vertical-align:top\">https://github.com/JetBrains/TeamCity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">39</td><td style=\"vertical-align:top\">[c-sharp, teamcity, teamcity-service-<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">39</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-python-library</td><td style=\"vertical-align:top\">https://github.com/JetBrains/youtrack<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">118</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">118</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">https://github.com/JetBrains/intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td><td style=\"vertical-align:top\">1066</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-messages</td><td style=\"vertical-align:top\">https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">125</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">125</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-cpp</td><td style=\"vertical-align:top\">https://github.com/JetBrains/teamcity<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">27</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">27</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">https://github.com/JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">39402</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394983\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"full_name\",\"html_url\",\"stargazers_count\",\"topics\",\"watchers\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"java.net.URL\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":562,\"ncol\":5},\"kotlin_dataframe\":[{\"full_name\":\"JetBrains/JPS\",\"html_url\":\"https://github.com/JetBrains/JPS\",\"stargazers_count\":23,\"topics\":\"[]\",\"watchers\":23},{\"full_name\":\"JetBrains/YouTrackSharp\",\"html_url\":\"https://github.com/JetBrains/YouTrackSharp\",\"stargazers_count\":115,\"topics\":\"[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]\",\"watchers\":115},{\"full_name\":\"JetBrains/colorSchemeTool\",\"html_url\":\"https://github.com/JetBrains/colorSchemeTool\",\"stargazers_count\":290,\"topics\":\"[]\",\"watchers\":290},{\"full_name\":\"JetBrains/ideavim\",\"html_url\":\"https://github.com/JetBrains/ideavim\",\"stargazers_count\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\",\"watchers\":6120},{\"full_name\":\"JetBrains/youtrack-vcs-hooks\",\"html_url\":\"https://github.com/JetBrains/youtrack-vcs-hooks\",\"stargazers_count\":5,\"topics\":\"[]\",\"watchers\":5},{\"full_name\":\"JetBrains/youtrack-rest-ruby-library\",\"html_url\":\"https://github.com/JetBrains/youtrack-rest-ruby-library\",\"stargazers_count\":8,\"topics\":\"[]\",\"watchers\":8},{\"full_name\":\"JetBrains/emacs4ij\",\"html_url\":\"https://github.com/JetBrains/emacs4ij\",\"stargazers_count\":47,\"topics\":\"[]\",\"watchers\":47},{\"full_name\":\"JetBrains/codereview4intellij\",\"html_url\":\"https://github.com/JetBrains/codereview4intellij\",\"stargazers_count\":11,\"topics\":\"[]\",\"watchers\":11},{\"full_name\":\"JetBrains/teamcity-nuget-support\",\"html_url\":\"https://github.com/JetBrains/teamcity-nuget-support\",\"stargazers_count\":41,\"topics\":\"[nuget, nuget-feed, teamcity, teamcity-plugin]\",\"watchers\":41},{\"full_name\":\"JetBrains/Grammar-Kit\",\"html_url\":\"https://github.com/JetBrains/Grammar-Kit\",\"stargazers_count\":534,\"topics\":\"[]\",\"watchers\":534},{\"full_name\":\"JetBrains/intellij-starteam-plugin\",\"html_url\":\"https://github.com/JetBrains/intellij-starteam-plugin\",\"stargazers_count\":6,\"topics\":\"[]\",\"watchers\":6},{\"full_name\":\"JetBrains/la-clojure\",\"html_url\":\"https://github.com/JetBrains/la-clojure\",\"stargazers_count\":218,\"topics\":\"[]\",\"watchers\":218},{\"full_name\":\"JetBrains/MPS\",\"html_url\":\"https://github.com/JetBrains/MPS\",\"stargazers_count\":1241,\"topics\":\"[domain-specific-language, dsl]\",\"watchers\":1241},{\"full_name\":\"JetBrains/intellij-community\",\"html_url\":\"https://github.com/JetBrains/intellij-community\",\"stargazers_count\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\",\"watchers\":12926},{\"full_name\":\"JetBrains/TeamCity.ServiceMessages\",\"html_url\":\"https://github.com/JetBrains/TeamCity.ServiceMessages\",\"stargazers_count\":39,\"topics\":\"[c-sharp, teamcity, teamcity-service-messages]\",\"watchers\":39},{\"full_name\":\"JetBrains/youtrack-rest-python-library\",\"html_url\":\"https://github.com/JetBrains/youtrack-rest-python-library\",\"stargazers_count\":118,\"topics\":\"[]\",\"watchers\":118},{\"full_name\":\"JetBrains/intellij-scala\",\"html_url\":\"https://github.com/JetBrains/intellij-scala\",\"stargazers_count\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\",\"watchers\":1066},{\"full_name\":\"JetBrains/teamcity-messages\",\"html_url\":\"https://github.com/JetBrains/teamcity-messages\",\"stargazers_count\":125,\"topics\":\"[]\",\"watchers\":125},{\"full_name\":\"JetBrains/teamcity-cpp\",\"html_url\":\"https://github.com/JetBrains/teamcity-cpp\",\"stargazers_count\":27,\"topics\":\"[]\",\"watchers\":27},{\"full_name\":\"JetBrains/kotlin\",\"html_url\":\"https://github.com/JetBrains/kotlin\",\"stargazers_count\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\",\"watchers\":39402}]}"
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 11
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Kotlin Notebook has special interactive outputs for `DataFrame`. Learn more about them [here](https://kotlin.github.io/dataframe/kotlin-dataframe-features-in-kotlin-notebook.html)."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Use `.describe()` method to get dataset summaries — column types, number of nulls and simple statistics."
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:03.040814Z",
"start_time": "2025-05-27T17:21:02.817272Z"
}
},
"cell_type": "code",
"source": "df.describe()",
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_14()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_14\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394982&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 5, columnsCount = 14&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;full_name&quot;,&quot;html_url&quot;,&quot;stargazers_count&quot;,&quot;topics&quot;,&quot;watchers&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;type: String&bsol;&quot;&gt;type&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;String&quot;,&quot;URL&quot;,&quot;Int&quot;,&quot;String&quot;,&quot;Int&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;count: Int&bsol;&quot;&gt;count&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;unique: Int&bsol;&quot;&gt;unique&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;562&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;165&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;145&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;165&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;nulls: Int&bsol;&quot;&gt;nulls&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;top: java.io.Serializable&bsol;&quot;&gt;top&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;JPS&quot;,&quot;&lt;a href='https:&sol;&sol;github.com&sol;JetBrains&sol;JPS' target='_blank'&gt;https:&sol;&sol;github.com&sol;JetBrains&sol;JPS&lt;&sol;a&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;freq: Int&bsol;&quot;&gt;freq&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;100&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;401&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;100&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;mean: Double?&bsol;&quot;&gt;mean&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;244.759786&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;244.759786&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;std: Double?&bsol;&quot;&gt;std&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1862.801982&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1862.801982&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;min: Comparable&lt;*&gt;?&bsol;&quot;&gt;min&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;Android-Tuts-Samples&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[2d, graphics, java, skia]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;p25: Comparable&lt;*&gt;?&bsol;&quot;&gt;p25&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;eslint-config&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2.0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2.0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;median: Comparable&lt;*&gt;?&bsol;&quot;&gt;median&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;lightbeam&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;8.0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;8.0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;p75: Comparable&lt;*&gt;?&bsol;&quot;&gt;p75&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;teamcity-bitbucket-issues&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;48.0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[awt, swing]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;48.0&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;max: Comparable&lt;*&gt;?&bsol;&quot;&gt;max&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;ztools&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;null&bsol;&quot;&gt;null&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[youtrack, youtrack-workflow]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394982, rootId: -1476394982, totalRows: 5 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394982) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_14() {\n",
" let elem = document.getElementById(\"iframe_out_14\");\n",
" resize_iframe_out_14(elem);\n",
" setInterval(resize_iframe_out_14, 5000, elem);\n",
" }\n",
" function resize_iframe_out_14(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394981\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">type</th><th class=\"bottomBorder\" style=\"text-align:left\">count</th><th class=\"bottomBorder\" style=\"text-align:left\">unique</th><th class=\"bottomBorder\" style=\"text-align:left\">nulls</th><th class=\"bottomBorder\" style=\"text-align:left\">top</th><th class=\"bottomBorder\" style=\"text-align:left\">freq</th><th class=\"bottomBorder\" style=\"text-align:left\">mean</th><th class=\"bottomBorder\" style=\"text-align:left\">std</th><th class=\"bottomBorder\" style=\"text-align:left\">min</th><th class=\"bottomBorder\" style=\"text-align:left\">p25</th><th class=\"bottomBorder\" style=\"text-align:left\">median</th><th class=\"bottomBorder\" style=\"text-align:left\">p75</th><th class=\"bottomBorder\" style=\"text-align:left\">max</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">full_name</td><td style=\"vertical-align:top\">String</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">JetBrains/JPS</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">JetBrains/Android-Tuts-Samples</td><td style=\"vertical-align:top\">JetBrains/eslint-config</td><td style=\"vertical-align:top\">JetBrains/lightbeam</td><td style=\"vertical-align:top\">JetBrains/teamcity-bitbucket-issues</td><td style=\"vertical-align:top\">JetBrains/ztools</td></tr><tr><td style=\"vertical-align:top\">html_url</td><td style=\"vertical-align:top\">URL</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">https://github.com/JetBrains/JPS</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td></tr><tr><td style=\"vertical-align:top\">stargazers_count</td><td style=\"vertical-align:top\">Int</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">165</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">100</td><td style=\"vertical-align:top\">244.759786</td><td style=\"vertical-align:top\">1862.801982</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">2.000000</td><td style=\"vertical-align:top\">8.000000</td><td style=\"vertical-align:top\">48.000000</td><td style=\"vertical-align:top\">39402</td></tr><tr><td style=\"vertical-align:top\">topics</td><td style=\"vertical-align:top\">String</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">145</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">401</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">null</td><td style=\"vertical-align:top\">[2d, graphics, java, skia]</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">[awt, swing]</td><td style=\"vertical-align:top\">[youtrack, youtrack-workflow]</td></tr><tr><td style=\"vertical-align:top\">watchers</td><td style=\"vertical-align:top\">Int</td><td style=\"vertical-align:top\">562</td><td style=\"vertical-align:top\">165</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">100</td><td style=\"vertical-align:top\">244.759786</td><td style=\"vertical-align:top\">1862.801982</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">2.000000</td><td style=\"vertical-align:top\">8.000000</td><td style=\"vertical-align:top\">48.000000</td><td style=\"vertical-align:top\">39402</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394981\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"type\",\"count\",\"unique\",\"nulls\",\"top\",\"freq\",\"mean\",\"std\",\"min\",\"p25\",\"median\",\"p75\",\"max\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"java.io.Serializable\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Double?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Double?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Comparable<*>?\"}],\"nrow\":5,\"ncol\":14},\"kotlin_dataframe\":[{\"name\":\"full_name\",\"type\":\"String\",\"count\":562,\"unique\":562,\"nulls\":0,\"top\":\"JetBrains/JPS\",\"freq\":1,\"mean\":null,\"std\":null,\"min\":\"JetBrains/Android-Tuts-Samples\",\"p25\":\"JetBrains/eslint-config\",\"median\":\"JetBrains/lightbeam\",\"p75\":\"JetBrains/teamcity-bitbucket-issues\",\"max\":\"JetBrains/ztools\"},{\"name\":\"html_url\",\"type\":\"URL\",\"count\":562,\"unique\":562,\"nulls\":0,\"top\":\"https://github.com/JetBrains/JPS\",\"freq\":1,\"mean\":null,\"std\":null,\"min\":null,\"p25\":null,\"median\":null,\"p75\":null,\"max\":null},{\"name\":\"stargazers_count\",\"type\":\"Int\",\"count\":562,\"unique\":165,\"nulls\":0,\"top\":\"1\",\"freq\":100,\"mean\":244.75978647686833,\"std\":1862.8019819171673,\"min\":\"0\",\"p25\":\"2.0\",\"median\":\"8.0\",\"p75\":\"48.0\",\"max\":\"39402\"},{\"name\":\"topics\",\"type\":\"String\",\"count\":562,\"unique\":145,\"nulls\":0,\"top\":\"[]\",\"freq\":401,\"mean\":null,\"std\":null,\"min\":\"[2d, graphics, java, skia]\",\"p25\":\"[]\",\"median\":\"[]\",\"p75\":\"[awt, swing]\",\"max\":\"[youtrack, youtrack-workflow]\"},{\"name\":\"watchers\",\"type\":\"Int\",\"count\":562,\"unique\":165,\"nulls\":0,\"top\":\"1\",\"freq\":100,\"mean\":244.75978647686833,\"std\":1862.8019819171673,\"min\":\"0\",\"p25\":\"2.0\",\"median\":\"8.0\",\"p75\":\"48.0\",\"max\":\"39402\"}]}"
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 12
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Select Columns"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"Kotlin DataFrame features a typesafe [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html), enabling flexible and safe selection of any combination of columns.\n",
"Column selectors are widely used across operations — one of the simplest examples is `.select { }`, which returns a new DataFrame with only the columns chosen in [Columns Selection](https://kotlin.github.io/dataframe/columnselectors.html) expression.\n",
"\n",
"After executing the cell where a `DataFrame` variable is declared, an extension with properties for its columns is automatically generated.\n",
"These properties can then be used in the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html) expression for typesafe and convenient column access.\n",
"\n",
"Select some columns:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:03.489356Z",
"start_time": "2025-05-27T17:21:03.044798Z"
}
},
"cell_type": "code",
"source": [
"// Select \"full_name\", \"stargazers_count\" and \"topics\" columns\n",
"val dfSelected = df.select { full_name and stargazers_count and topics }\n",
"dfSelected"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_15()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_15\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394980&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;... showing only top 20 of 562 rows&lt;&sol;p&gt;&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 562, columnsCount = 3&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;full_name: String&bsol;&quot;&gt;full_name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;JPS&quot;,&quot;JetBrains&sol;YouTrackSharp&quot;,&quot;JetBrains&sol;colorSchemeTool&quot;,&quot;JetBrains&sol;ideavim&quot;,&quot;JetBrains&sol;youtrack-vcs-hooks&quot;,&quot;JetBrains&sol;youtrack-rest-ruby-library&quot;,&quot;JetBrains&sol;emacs4ij&quot;,&quot;JetBrains&sol;codereview4intellij&quot;,&quot;JetBrains&sol;teamcity-nuget-support&quot;,&quot;JetBrains&sol;Grammar-Kit&quot;,&quot;JetBrains&sol;intellij-starteam-plugin&quot;,&quot;JetBrains&sol;la-clojure&quot;,&quot;JetBrains&sol;MPS&quot;,&quot;JetBrains&sol;intellij-community&quot;,&quot;JetBrains&sol;TeamCity.ServiceMessages&quot;,&quot;JetBrains&sol;youtrack-rest-python-library&quot;,&quot;JetBrains&sol;intellij-scala&quot;,&quot;JetBrains&sol;teamcity-messages&quot;,&quot;JetBrains&sol;teamcity-cpp&quot;,&quot;JetBrains&sol;kotlin&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;stargazers_count: Int&bsol;&quot;&gt;stargazers_count&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;23&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;115&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;290&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;8&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;47&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;11&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;41&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;534&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;218&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;118&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;125&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;27&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: String&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]&bsol;&quot;&gt;[jetbrains, jetbrains-youtrack, youtr&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]&bsol;&quot;&gt;[ideavim, intellij, intellij-platform&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[nuget, nuget-feed, teamcity, teamcity-plugin]&bsol;&quot;&gt;[nuget, nuget-feed, teamcity, teamcit&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;[domain-specific-language, dsl]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[code-editor, ide, intellij, intellij-community, intellij-platform]&bsol;&quot;&gt;[code-editor, ide, intellij, intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[c-sharp, teamcity, teamcity-service-messages]&bsol;&quot;&gt;[c-sharp, teamcity, teamcity-service-&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[intellij-idea, intellij-plugin, scala]&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]&bsol;&quot;&gt;[compiler, gradle-plugin, intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394980, rootId: -1476394980, totalRows: 562 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394980) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_15() {\n",
" let elem = document.getElementById(\"iframe_out_15\");\n",
" resize_iframe_out_15(elem);\n",
" setInterval(resize_iframe_out_15, 5000, elem);\n",
" }\n",
" function resize_iframe_out_15(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394979\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">full_name</th><th class=\"bottomBorder\" style=\"text-align:left\">stargazers_count</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/JPS</td><td style=\"vertical-align:top\">23</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/YouTrackSharp</td><td style=\"vertical-align:top\">115</td><td style=\"vertical-align:top\">[jetbrains, jetbrains-youtrack, youtr<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/colorSchemeTool</td><td style=\"vertical-align:top\">290</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-vcs-hooks</td><td style=\"vertical-align:top\">5</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-ruby-library</td><td style=\"vertical-align:top\">8</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/emacs4ij</td><td style=\"vertical-align:top\">47</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/codereview4intellij</td><td style=\"vertical-align:top\">11</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-nuget-support</td><td style=\"vertical-align:top\">41</td><td style=\"vertical-align:top\">[nuget, nuget-feed, teamcity, teamcit<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/Grammar-Kit</td><td style=\"vertical-align:top\">534</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-starteam-plugin</td><td style=\"vertical-align:top\">6</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/la-clojure</td><td style=\"vertical-align:top\">218</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/TeamCity.ServiceMessages</td><td style=\"vertical-align:top\">39</td><td style=\"vertical-align:top\">[c-sharp, teamcity, teamcity-service-<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/youtrack-rest-python-library</td><td style=\"vertical-align:top\">118</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-messages</td><td style=\"vertical-align:top\">125</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/teamcity-cpp</td><td style=\"vertical-align:top\">27</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394979\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"full_name\",\"stargazers_count\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":562,\"ncol\":3},\"kotlin_dataframe\":[{\"full_name\":\"JetBrains/JPS\",\"stargazers_count\":23,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/YouTrackSharp\",\"stargazers_count\":115,\"topics\":\"[jetbrains, jetbrains-youtrack, youtrack, youtrack-api]\"},{\"full_name\":\"JetBrains/colorSchemeTool\",\"stargazers_count\":290,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/ideavim\",\"stargazers_count\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\"},{\"full_name\":\"JetBrains/youtrack-vcs-hooks\",\"stargazers_count\":5,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/youtrack-rest-ruby-library\",\"stargazers_count\":8,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/emacs4ij\",\"stargazers_count\":47,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/codereview4intellij\",\"stargazers_count\":11,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/teamcity-nuget-support\",\"stargazers_count\":41,\"topics\":\"[nuget, nuget-feed, teamcity, teamcity-plugin]\"},{\"full_name\":\"JetBrains/Grammar-Kit\",\"stargazers_count\":534,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/intellij-starteam-plugin\",\"stargazers_count\":6,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/la-clojure\",\"stargazers_count\":218,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/MPS\",\"stargazers_count\":1241,\"topics\":\"[domain-specific-language, dsl]\"},{\"full_name\":\"JetBrains/intellij-community\",\"stargazers_count\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\"},{\"full_name\":\"JetBrains/TeamCity.ServiceMessages\",\"stargazers_count\":39,\"topics\":\"[c-sharp, teamcity, teamcity-service-messages]\"},{\"full_name\":\"JetBrains/youtrack-rest-python-library\",\"stargazers_count\":118,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/intellij-scala\",\"stargazers_count\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\"},{\"full_name\":\"JetBrains/teamcity-messages\",\"stargazers_count\":125,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/teamcity-cpp\",\"stargazers_count\":27,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/kotlin\",\"stargazers_count\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\"}]}"
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 13
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Raw Filtering"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"Some operations use `RowExpression`, i.e., an expression that applies for all `DataFrame` rows.\n",
"For example `.filter { }` returns a new `DataFrame` with rows that satisfy a condition given by row expression.\n",
"\n",
"Inside a row expression, you can access the values of the current row by column names through auto-generated properties.\n",
"Similar to the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html), but in this case the properties represent actual values, not column references.\n",
"\n",
"Filter rows by \"stargazers_count\" value:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:03.726083Z",
"start_time": "2025-05-27T17:21:03.494323Z"
}
},
"cell_type": "code",
"source": [
"// Keep only rows where \"stargazers_count\" value is more than 1000\n",
"val dfFiltered = dfSelected.filter { stargazers_count >= 1000 }\n",
"dfFiltered"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_16()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_16\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394978&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;... showing only top 20 of 24 rows&lt;&sol;p&gt;&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 24, columnsCount = 3&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;full_name: String&bsol;&quot;&gt;full_name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;ideavim&quot;,&quot;JetBrains&sol;MPS&quot;,&quot;JetBrains&sol;intellij-community&quot;,&quot;JetBrains&sol;intellij-scala&quot;,&quot;JetBrains&sol;kotlin&quot;,&quot;JetBrains&sol;intellij-plugins&quot;,&quot;JetBrains&sol;Exposed&quot;,&quot;JetBrains&sol;kotlin-web-site&quot;,&quot;JetBrains&sol;idea-gitignore&quot;,&quot;JetBrains&sol;swot&quot;,&quot;JetBrains&sol;phpstorm-stubs&quot;,&quot;JetBrains&sol;gradle-intellij-plugin&quot;,&quot;JetBrains&sol;svg-sprite-loader&quot;,&quot;JetBrains&sol;resharper-unity&quot;,&quot;JetBrains&sol;kotlin-native&quot;,&quot;JetBrains&sol;create-react-kotlin-app&quot;,&quot;JetBrains&sol;ring-ui&quot;,&quot;JetBrains&sol;kotlinconf-app&quot;,&quot;JetBrains&sol;JetBrainsMono&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;JetBrains&sol;intellij-platform-plugin-template&bsol;&quot;&gt;JetBrains&sol;intellij-platform-plugin-te&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;stargazers_count: Int&bsol;&quot;&gt;stargazers_count&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1737&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5688&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1074&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1181&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1072&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1110&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1058&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1815&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1017&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;7101&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2424&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2836&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2628&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6059&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1133&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: String&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]&bsol;&quot;&gt;[ideavim, intellij, intellij-platform&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[domain-specific-language, dsl]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[code-editor, ide, intellij, intellij-community, intellij-platform]&bsol;&quot;&gt;[code-editor, ide, intellij, intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[intellij-idea, intellij-plugin, scala]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]&bsol;&quot;&gt;[compiler, gradle-plugin, intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[dao, kotlin, orm, sql]&quot;,&quot;[kotlin]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[gitignore, ignore-files, intellij, intellij-plugin, java]&bsol;&quot;&gt;[gitignore, ignore-files, intellij, i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]&bsol;&quot;&gt;[gradle, gradle-intellij-plugin, grad&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]&bsol;&quot;&gt;[sprite, svg, svg-sprite, svg-stack, &lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]&bsol;&quot;&gt;[hacktoberfest, jetbrains, plugin, re&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[c, compiler, kotlin, llvm, objective-c]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[create-react-app, jetbrains-ui, kotlin, react, webpack]&bsol;&quot;&gt;[create-react-app, jetbrains-ui, kotl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[components, jetbrains-ui, react]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]&bsol;&quot;&gt;[coding-font, font, ligatures, monosp&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]&bsol;&quot;&gt;[intellij, intellij-idea, intellij-id&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394978, rootId: -1476394978, totalRows: 24 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394978) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_16() {\n",
" let elem = document.getElementById(\"iframe_out_16\");\n",
" resize_iframe_out_16(elem);\n",
" setInterval(resize_iframe_out_16, 5000, elem);\n",
" }\n",
" function resize_iframe_out_16(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394977\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">full_name</th><th class=\"bottomBorder\" style=\"text-align:left\">stargazers_count</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-platform-plugin-te<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394977\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"full_name\",\"stargazers_count\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":24,\"ncol\":3},\"kotlin_dataframe\":[{\"full_name\":\"JetBrains/ideavim\",\"stargazers_count\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\"},{\"full_name\":\"JetBrains/MPS\",\"stargazers_count\":1241,\"topics\":\"[domain-specific-language, dsl]\"},{\"full_name\":\"JetBrains/intellij-community\",\"stargazers_count\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\"},{\"full_name\":\"JetBrains/intellij-scala\",\"stargazers_count\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\"},{\"full_name\":\"JetBrains/kotlin\",\"stargazers_count\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\"},{\"full_name\":\"JetBrains/intellij-plugins\",\"stargazers_count\":1737,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/Exposed\",\"stargazers_count\":5688,\"topics\":\"[dao, kotlin, orm, sql]\"},{\"full_name\":\"JetBrains/kotlin-web-site\",\"stargazers_count\":1074,\"topics\":\"[kotlin]\"},{\"full_name\":\"JetBrains/idea-gitignore\",\"stargazers_count\":1181,\"topics\":\"[gitignore, ignore-files, intellij, intellij-plugin, java]\"},{\"full_name\":\"JetBrains/swot\",\"stargazers_count\":1072,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/phpstorm-stubs\",\"stargazers_count\":1110,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/gradle-intellij-plugin\",\"stargazers_count\":1058,\"topics\":\"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]\"},{\"full_name\":\"JetBrains/svg-sprite-loader\",\"stargazers_count\":1815,\"topics\":\"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]\"},{\"full_name\":\"JetBrains/resharper-unity\",\"stargazers_count\":1017,\"topics\":\"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]\"},{\"full_name\":\"JetBrains/kotlin-native\",\"stargazers_count\":7101,\"topics\":\"[c, compiler, kotlin, llvm, objective-c]\"},{\"full_name\":\"JetBrains/create-react-kotlin-app\",\"stargazers_count\":2424,\"topics\":\"[create-react-app, jetbrains-ui, kotlin, react, webpack]\"},{\"full_name\":\"JetBrains/ring-ui\",\"stargazers_count\":2836,\"topics\":\"[components, jetbrains-ui, react]\"},{\"full_name\":\"JetBrains/kotlinconf-app\",\"stargazers_count\":2628,\"topics\":\"[]\"},{\"full_name\":\"JetBrains/JetBrainsMono\",\"stargazers_count\":6059,\"topics\":\"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]\"},{\"full_name\":\"JetBrains/intellij-platform-plugin-template\",\"stargazers_count\":1133,\"topics\":\"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]\"}]}"
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 14
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Columns Rename"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"Columns can be renamed using the `.rename { }` operation, which also uses the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html) to select a column to rename.\n",
"The `rename` operation does not perform the renaming immediately; instead, it creates an intermediate object that must be finalized into a new `DataFrame` by calling the `.into()` function with the new column name.\n",
"\n",
"Rename \"full_name\" and \"stargazers_count\" columns:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:04.133144Z",
"start_time": "2025-05-27T17:21:03.730392Z"
}
},
"cell_type": "code",
"source": [
"// Rename \"full_name\" column into \"name\"\n",
"val dfRenamed = dfFiltered\n",
" .rename { full_name }.into(\"name\")\n",
" // And \"stargazers_count\" into \"starsCount\"\n",
" .rename { stargazers_count }.into(\"starsCount\")\n",
"dfRenamed"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_17()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_17\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394976&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;... showing only top 20 of 24 rows&lt;&sol;p&gt;&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 24, columnsCount = 3&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;JetBrains&sol;ideavim&quot;,&quot;JetBrains&sol;MPS&quot;,&quot;JetBrains&sol;intellij-community&quot;,&quot;JetBrains&sol;intellij-scala&quot;,&quot;JetBrains&sol;kotlin&quot;,&quot;JetBrains&sol;intellij-plugins&quot;,&quot;JetBrains&sol;Exposed&quot;,&quot;JetBrains&sol;kotlin-web-site&quot;,&quot;JetBrains&sol;idea-gitignore&quot;,&quot;JetBrains&sol;swot&quot;,&quot;JetBrains&sol;phpstorm-stubs&quot;,&quot;JetBrains&sol;gradle-intellij-plugin&quot;,&quot;JetBrains&sol;svg-sprite-loader&quot;,&quot;JetBrains&sol;resharper-unity&quot;,&quot;JetBrains&sol;kotlin-native&quot;,&quot;JetBrains&sol;create-react-kotlin-app&quot;,&quot;JetBrains&sol;ring-ui&quot;,&quot;JetBrains&sol;kotlinconf-app&quot;,&quot;JetBrains&sol;JetBrainsMono&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;JetBrains&sol;intellij-platform-plugin-template&bsol;&quot;&gt;JetBrains&sol;intellij-platform-plugin-te&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;starsCount: Int&bsol;&quot;&gt;starsCount&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1737&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5688&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1074&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1181&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1072&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1110&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1058&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1815&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1017&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;7101&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2424&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2836&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2628&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6059&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1133&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: String&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]&bsol;&quot;&gt;[ideavim, intellij, intellij-platform&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[domain-specific-language, dsl]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[code-editor, ide, intellij, intellij-community, intellij-platform]&bsol;&quot;&gt;[code-editor, ide, intellij, intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[intellij-idea, intellij-plugin, scala]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]&bsol;&quot;&gt;[compiler, gradle-plugin, intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[dao, kotlin, orm, sql]&quot;,&quot;[kotlin]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[gitignore, ignore-files, intellij, intellij-plugin, java]&bsol;&quot;&gt;[gitignore, ignore-files, intellij, i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]&bsol;&quot;&gt;[gradle, gradle-intellij-plugin, grad&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]&bsol;&quot;&gt;[sprite, svg, svg-sprite, svg-stack, &lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]&bsol;&quot;&gt;[hacktoberfest, jetbrains, plugin, re&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[c, compiler, kotlin, llvm, objective-c]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[create-react-app, jetbrains-ui, kotlin, react, webpack]&bsol;&quot;&gt;[create-react-app, jetbrains-ui, kotl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;[components, jetbrains-ui, react]&quot;,&quot;[]&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]&bsol;&quot;&gt;[coding-font, font, ligatures, monosp&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]&bsol;&quot;&gt;[intellij, intellij-idea, intellij-id&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394976, rootId: -1476394976, totalRows: 24 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394976) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_17() {\n",
" let elem = document.getElementById(\"iframe_out_17\");\n",
" resize_iframe_out_17(elem);\n",
" setInterval(resize_iframe_out_17, 5000, elem);\n",
" }\n",
" function resize_iframe_out_17(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394975\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">JetBrains/ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrains/JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">JetBrains/intellij-platform-plugin-te<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394975\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":24,\"ncol\":3},\"kotlin_dataframe\":[{\"name\":\"JetBrains/ideavim\",\"starsCount\":6120,\"topics\":\"[ideavim, intellij, intellij-platform, jb-official, kotlin, vim, vim-emulator]\"},{\"name\":\"JetBrains/MPS\",\"starsCount\":1241,\"topics\":\"[domain-specific-language, dsl]\"},{\"name\":\"JetBrains/intellij-community\",\"starsCount\":12926,\"topics\":\"[code-editor, ide, intellij, intellij-community, intellij-platform]\"},{\"name\":\"JetBrains/intellij-scala\",\"starsCount\":1066,\"topics\":\"[intellij-idea, intellij-plugin, scala]\"},{\"name\":\"JetBrains/kotlin\",\"starsCount\":39402,\"topics\":\"[compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language]\"},{\"name\":\"JetBrains/intellij-plugins\",\"starsCount\":1737,\"topics\":\"[]\"},{\"name\":\"JetBrains/Exposed\",\"starsCount\":5688,\"topics\":\"[dao, kotlin, orm, sql]\"},{\"name\":\"JetBrains/kotlin-web-site\",\"starsCount\":1074,\"topics\":\"[kotlin]\"},{\"name\":\"JetBrains/idea-gitignore\",\"starsCount\":1181,\"topics\":\"[gitignore, ignore-files, intellij, intellij-plugin, java]\"},{\"name\":\"JetBrains/swot\",\"starsCount\":1072,\"topics\":\"[]\"},{\"name\":\"JetBrains/phpstorm-stubs\",\"starsCount\":1110,\"topics\":\"[]\"},{\"name\":\"JetBrains/gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":\"[gradle, gradle-intellij-plugin, gradle-kotlin-dsl, groovy, intellij, intellij-ides, intellij-platform, intellij-plugin, intellij-sdk, jetbrains-plugin, kotlin, plugin-verifier, publishing-dsl, setup-dsl, teamcity, travis-configuration]\"},{\"name\":\"JetBrains/svg-sprite-loader\",\"starsCount\":1815,\"topics\":\"[sprite, svg, svg-sprite, svg-stack, webpack, webpack-loader, webpack-plugin, webpack2, webpack3]\"},{\"name\":\"JetBrains/resharper-unity\",\"starsCount\":1017,\"topics\":\"[hacktoberfest, jetbrains, plugin, resharper, resharper-plugin, rider, unity, unity-editor]\"},{\"name\":\"JetBrains/kotlin-native\",\"starsCount\":7101,\"topics\":\"[c, compiler, kotlin, llvm, objective-c]\"},{\"name\":\"JetBrains/create-react-kotlin-app\",\"starsCount\":2424,\"topics\":\"[create-react-app, jetbrains-ui, kotlin, react, webpack]\"},{\"name\":\"JetBrains/ring-ui\",\"starsCount\":2836,\"topics\":\"[components, jetbrains-ui, react]\"},{\"name\":\"JetBrains/kotlinconf-app\",\"starsCount\":2628,\"topics\":\"[]\"},{\"name\":\"JetBrains/JetBrainsMono\",\"starsCount\":6059,\"topics\":\"[coding-font, font, ligatures, monospaced-font, programming-font, programming-ligatures]\"},{\"name\":\"JetBrains/intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":\"[intellij, intellij-idea, intellij-idea-plugin, intellij-platform, intellij-plugin, intellij-plugins, jetbrains-plugin]\"}]}"
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 15
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Modify Columns"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"Columns can be modified using the `update { }` and `convert { }` operations.\n",
"Both operations select columns to modify via the [Columns Selection DSL](https://kotlin.github.io/dataframe/columnselectors.html) and, similar to `rename`, create an intermediate object that must be finalized to produce a new `DataFrame`.\n",
"\n",
"The `update` operation preserves the original column types, while `convert` allows changing the type.\n",
"In both cases, column names and their positions remain unchanged.\n",
"\n",
"Update \"name\" and convert \"topics\":"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:24:22.730669Z",
"start_time": "2025-05-27T17:24:22.234699Z"
}
},
"cell_type": "code",
"source": [
"val dfUpdated = dfRenamed\n",
" // Update \"name\" values with only its second part (after '/')\n",
" .update { name }.with { it.split(\"/\")[1] }\n",
" // Convert \"topics\" `String` values into `List<String>` by splitting:\n",
" .convert { topics }.with { it.removeSurrounding(\"[\", \"]\").split(\", \") }\n",
"dfUpdated"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_35()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_35\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394932&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;... showing only top 20 of 24 rows&lt;&sol;p&gt;&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 24, columnsCount = 3&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;ideavim&quot;,&quot;MPS&quot;,&quot;intellij-community&quot;,&quot;intellij-scala&quot;,&quot;kotlin&quot;,&quot;intellij-plugins&quot;,&quot;Exposed&quot;,&quot;kotlin-web-site&quot;,&quot;idea-gitignore&quot;,&quot;swot&quot;,&quot;phpstorm-stubs&quot;,&quot;gradle-intellij-plugin&quot;,&quot;svg-sprite-loader&quot;,&quot;resharper-unity&quot;,&quot;kotlin-native&quot;,&quot;create-react-kotlin-app&quot;,&quot;ring-ui&quot;,&quot;kotlinconf-app&quot;,&quot;JetBrainsMono&quot;,&quot;intellij-platform-plugin-template&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;starsCount: Int&bsol;&quot;&gt;starsCount&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1737&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5688&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1074&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1181&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1072&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1110&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1058&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1815&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1017&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;7101&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2424&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2836&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2628&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6059&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1133&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: List&lt;String&gt;&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;ideavim&bsol;nintellij&bsol;nintellij-platform&bsol;njb-official&bsol;nkotlin&bsol;nvim&bsol;nvim-emulator&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;ideavim&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;domain-specific-language&bsol;ndsl&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;domain-specific-language&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;dsl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;code-editor&bsol;nide&bsol;nintellij&bsol;nintellij-community&bsol;nintellij-platform&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;code-editor&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ide&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;intellij-idea&bsol;nintellij-plugin&bsol;nscala&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;intellij-idea&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;scala&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;compiler&bsol;ngradle-plugin&bsol;nintellij-plugin&bsol;nkotlin&bsol;nkotlin-library&bsol;nmaven-plugin&bsol;nprogramming-language&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;gradle-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intel&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;dao&bsol;nkotlin&bsol;norm&bsol;nsql&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;dao&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;orm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;sql&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;kotlin&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;gitignore&bsol;nignore-files&bsol;nintellij&bsol;nintellij-plugin&bsol;njava&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;gitignore&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ignore-files&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;gradle&bsol;ngradle-intellij-plugin&bsol;ngradle-kotlin-dsl&bsol;ngroovy&bsol;nintellij&bsol;nintellij-ides&bsol;nintellij-platform&bsol;nintellij-plugin&bsol;nintellij-sdk&bsol;njetbrains-plugin&bsol;nkotlin&bsol;nplugin-verifier&bsol;npublishing-dsl&bsol;nsetup-dsl&bsol;nteamcity&bsol;ntravis-configuration&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;gradle&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;gradle-intellij-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;sprite&bsol;nsvg&bsol;nsvg-sprite&bsol;nsvg-stack&bsol;nwebpack&bsol;nwebpack-loader&bsol;nwebpack-plugin&bsol;nwebpack2&bsol;nwebpack3&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;sprite&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;svg&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;svg-sprite&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;svg-s&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;hacktoberfest&bsol;njetbrains&bsol;nplugin&bsol;nresharper&bsol;nresharper-plugin&bsol;nrider&bsol;nunity&bsol;nunity-editor&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;hacktoberfest&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;c&bsol;ncompiler&bsol;nkotlin&bsol;nllvm&bsol;nobjective-c&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;c&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;llvm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;objective-c&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;create-react-app&bsol;njetbrains-ui&bsol;nkotlin&bsol;nreact&bsol;nwebpack&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;create-react-app&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains-ui&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;components&bsol;njetbrains-ui&bsol;nreact&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;components&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains-ui&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;react&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;coding-font&bsol;nfont&bsol;nligatures&bsol;nmonospaced-font&bsol;nprogramming-font&bsol;nprogramming-ligatures&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;coding-font&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;font&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ligatures&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;intellij&bsol;nintellij-idea&bsol;nintellij-idea-plugin&bsol;nintellij-platform&bsol;nintellij-plugin&bsol;nintellij-plugins&bsol;njetbrains-plugin&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-idea&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intel&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394932, rootId: -1476394932, totalRows: 24 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394932) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_35() {\n",
" let elem = document.getElementById(\"iframe_out_35\");\n",
" resize_iframe_out_35(elem);\n",
" setInterval(resize_iframe_out_35, 5000, elem);\n",
" }\n",
" function resize_iframe_out_35(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394931\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td></tr><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td></tr><tr><td style=\"vertical-align:top\">kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td></tr><tr><td style=\"vertical-align:top\">idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td></tr><tr><td style=\"vertical-align:top\">create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td></tr><tr><td style=\"vertical-align:top\">kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">intellij-platform-plugin-template</td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394931\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"}],\"nrow\":24,\"ncol\":3},\"kotlin_dataframe\":[{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"]},{\"name\":\"MPS\",\"starsCount\":1241,\"topics\":[\"domain-specific-language\",\"dsl\"]},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"]},{\"name\":\"intellij-scala\",\"starsCount\":1066,\"topics\":[\"intellij-idea\",\"intellij-plugin\",\"scala\"]},{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"]},{\"name\":\"intellij-plugins\",\"starsCount\":1737,\"topics\":[\"\"]},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"]},{\"name\":\"kotlin-web-site\",\"starsCount\":1074,\"topics\":[\"kotlin\"]},{\"name\":\"idea-gitignore\",\"starsCount\":1181,\"topics\":[\"gitignore\",\"ignore-files\",\"intellij\",\"intellij-plugin\",\"java\"]},{\"name\":\"swot\",\"starsCount\":1072,\"topics\":[\"\"]},{\"name\":\"phpstorm-stubs\",\"starsCount\":1110,\"topics\":[\"\"]},{\"name\":\"gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":[\"gradle\",\"gradle-intellij-plugin\",\"gradle-kotlin-dsl\",\"groovy\",\"intellij\",\"intellij-ides\",\"intellij-platform\",\"intellij-plugin\",\"intellij-sdk\",\"jetbrains-plugin\",\"kotlin\",\"plugin-verifier\",\"publishing-dsl\",\"setup-dsl\",\"teamcity\",\"travis-configuration\"]},{\"name\":\"svg-sprite-loader\",\"starsCount\":1815,\"topics\":[\"sprite\",\"svg\",\"svg-sprite\",\"svg-stack\",\"webpack\",\"webpack-loader\",\"webpack-plugin\",\"webpack2\",\"webpack3\"]},{\"name\":\"resharper-unity\",\"starsCount\":1017,\"topics\":[\"hacktoberfest\",\"jetbrains\",\"plugin\",\"resharper\",\"resharper-plugin\",\"rider\",\"unity\",\"unity-editor\"]},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"]},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"]},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"]},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"]},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"]},{\"name\":\"intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":[\"intellij\",\"intellij-idea\",\"intellij-idea-plugin\",\"intellij-platform\",\"intellij-plugin\",\"intellij-plugins\",\"jetbrains-plugin\"]}]}"
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 26
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Check the new \"topics\" type out:"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:24:39.779771Z",
"start_time": "2025-05-27T17:24:39.722836Z"
}
},
"cell_type": "code",
"source": "dfUpdated.topics.type()",
"outputs": [
{
"data": {
"text/plain": [
"kotlin.collections.List<kotlin.String>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 27
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Adding New Columns"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"The `.add { }` function allows creating a `DataFrame` with a new column, where the value for each row is computed based on the existing values in that row. These values can be accessed within the row expressions.\n",
"\n",
"Add a new `Boolean` column \"isIntellij\":"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:25:02.027792Z",
"start_time": "2025-05-27T17:25:01.788709Z"
}
},
"cell_type": "code",
"source": [
"// Add a `Boolean` column indicating whether the `name` contains the \"intellij\" substring\n",
"// or the topics include \"intellij\".\n",
"val dfWithIsIntellij = dfUpdated.add(\"isIntellij\") {\n",
" name.contains(\"intellij\") || \"intellij\" in topics\n",
"}\n",
"dfWithIsIntellij"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_37()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_37\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394928&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;... showing only top 20 of 24 rows&lt;&sol;p&gt;&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 24, columnsCount = 4&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;ideavim&quot;,&quot;MPS&quot;,&quot;intellij-community&quot;,&quot;intellij-scala&quot;,&quot;kotlin&quot;,&quot;intellij-plugins&quot;,&quot;Exposed&quot;,&quot;kotlin-web-site&quot;,&quot;idea-gitignore&quot;,&quot;swot&quot;,&quot;phpstorm-stubs&quot;,&quot;gradle-intellij-plugin&quot;,&quot;svg-sprite-loader&quot;,&quot;resharper-unity&quot;,&quot;kotlin-native&quot;,&quot;create-react-kotlin-app&quot;,&quot;ring-ui&quot;,&quot;kotlinconf-app&quot;,&quot;JetBrainsMono&quot;,&quot;intellij-platform-plugin-template&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;starsCount: Int&bsol;&quot;&gt;starsCount&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1737&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5688&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1074&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1181&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1072&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1110&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1058&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1815&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1017&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;7101&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2424&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2836&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2628&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6059&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1133&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: List&lt;String&gt;&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;ideavim&bsol;nintellij&bsol;nintellij-platform&bsol;njb-official&bsol;nkotlin&bsol;nvim&bsol;nvim-emulator&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;ideavim&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;domain-specific-language&bsol;ndsl&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;domain-specific-language&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;dsl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;code-editor&bsol;nide&bsol;nintellij&bsol;nintellij-community&bsol;nintellij-platform&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;code-editor&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ide&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;intellij-idea&bsol;nintellij-plugin&bsol;nscala&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;intellij-idea&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;scala&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;compiler&bsol;ngradle-plugin&bsol;nintellij-plugin&bsol;nkotlin&bsol;nkotlin-library&bsol;nmaven-plugin&bsol;nprogramming-language&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;gradle-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intel&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;dao&bsol;nkotlin&bsol;norm&bsol;nsql&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;dao&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;orm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;sql&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;kotlin&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;gitignore&bsol;nignore-files&bsol;nintellij&bsol;nintellij-plugin&bsol;njava&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;gitignore&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ignore-files&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;gradle&bsol;ngradle-intellij-plugin&bsol;ngradle-kotlin-dsl&bsol;ngroovy&bsol;nintellij&bsol;nintellij-ides&bsol;nintellij-platform&bsol;nintellij-plugin&bsol;nintellij-sdk&bsol;njetbrains-plugin&bsol;nkotlin&bsol;nplugin-verifier&bsol;npublishing-dsl&bsol;nsetup-dsl&bsol;nteamcity&bsol;ntravis-configuration&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;gradle&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;gradle-intellij-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;sprite&bsol;nsvg&bsol;nsvg-sprite&bsol;nsvg-stack&bsol;nwebpack&bsol;nwebpack-loader&bsol;nwebpack-plugin&bsol;nwebpack2&bsol;nwebpack3&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;sprite&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;svg&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;svg-sprite&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;svg-s&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;hacktoberfest&bsol;njetbrains&bsol;nplugin&bsol;nresharper&bsol;nresharper-plugin&bsol;nrider&bsol;nunity&bsol;nunity-editor&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;hacktoberfest&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;c&bsol;ncompiler&bsol;nkotlin&bsol;nllvm&bsol;nobjective-c&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;c&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;llvm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;objective-c&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;create-react-app&bsol;njetbrains-ui&bsol;nkotlin&bsol;nreact&bsol;nwebpack&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;create-react-app&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains-ui&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;components&bsol;njetbrains-ui&bsol;nreact&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;components&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains-ui&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;react&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;coding-font&bsol;nfont&bsol;nligatures&bsol;nmonospaced-font&bsol;nprogramming-font&bsol;nprogramming-ligatures&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;coding-font&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;font&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ligatures&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;intellij&bsol;nintellij-idea&bsol;nintellij-idea-plugin&bsol;nintellij-platform&bsol;nintellij-plugin&bsol;nintellij-plugins&bsol;njetbrains-plugin&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-idea&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intel&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;true&quot;,&quot;false&quot;,&quot;true&quot;,&quot;true&quot;,&quot;false&quot;,&quot;true&quot;,&quot;false&quot;,&quot;false&quot;,&quot;true&quot;,&quot;false&quot;,&quot;false&quot;,&quot;true&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;true&quot;] }, \n",
"], id: -1476394928, rootId: -1476394928, totalRows: 24 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394928) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_37() {\n",
" let elem = document.getElementById(\"iframe_out_37\");\n",
" resize_iframe_out_37(elem);\n",
" setInterval(resize_iframe_out_37, 5000, elem);\n",
" }\n",
" function resize_iframe_out_37(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394927\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">phpstorm-stubs</td><td style=\"vertical-align:top\">1110</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">gradle-intellij-plugin</td><td style=\"vertical-align:top\">1058</td><td style=\"vertical-align:top\">[gradle, gradle-intellij-plugin, grad<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">svg-sprite-loader</td><td style=\"vertical-align:top\">1815</td><td style=\"vertical-align:top\">[sprite, svg, svg-sprite, svg-stack, <span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">resharper-unity</td><td style=\"vertical-align:top\">1017</td><td style=\"vertical-align:top\">[hacktoberfest, jetbrains, plugin, re<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-platform-plugin-template</td><td style=\"vertical-align:top\">1133</td><td style=\"vertical-align:top\">[intellij, intellij-idea, intellij-id<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394927\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"nrow\":24,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"],\"isIntellij\":true},{\"name\":\"MPS\",\"starsCount\":1241,\"topics\":[\"domain-specific-language\",\"dsl\"],\"isIntellij\":false},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"],\"isIntellij\":true},{\"name\":\"intellij-scala\",\"starsCount\":1066,\"topics\":[\"intellij-idea\",\"intellij-plugin\",\"scala\"],\"isIntellij\":true},{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"],\"isIntellij\":false},{\"name\":\"intellij-plugins\",\"starsCount\":1737,\"topics\":[\"\"],\"isIntellij\":true},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"],\"isIntellij\":false},{\"name\":\"kotlin-web-site\",\"starsCount\":1074,\"topics\":[\"kotlin\"],\"isIntellij\":false},{\"name\":\"idea-gitignore\",\"starsCount\":1181,\"topics\":[\"gitignore\",\"ignore-files\",\"intellij\",\"intellij-plugin\",\"java\"],\"isIntellij\":true},{\"name\":\"swot\",\"starsCount\":1072,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"phpstorm-stubs\",\"starsCount\":1110,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":[\"gradle\",\"gradle-intellij-plugin\",\"gradle-kotlin-dsl\",\"groovy\",\"intellij\",\"intellij-ides\",\"intellij-platform\",\"intellij-plugin\",\"intellij-sdk\",\"jetbrains-plugin\",\"kotlin\",\"plugin-verifier\",\"publishing-dsl\",\"setup-dsl\",\"teamcity\",\"travis-configuration\"],\"isIntellij\":true},{\"name\":\"svg-sprite-loader\",\"starsCount\":1815,\"topics\":[\"sprite\",\"svg\",\"svg-sprite\",\"svg-stack\",\"webpack\",\"webpack-loader\",\"webpack-plugin\",\"webpack2\",\"webpack3\"],\"isIntellij\":false},{\"name\":\"resharper-unity\",\"starsCount\":1017,\"topics\":[\"hacktoberfest\",\"jetbrains\",\"plugin\",\"resharper\",\"resharper-plugin\",\"rider\",\"unity\",\"unity-editor\"],\"isIntellij\":false},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"],\"isIntellij\":false},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"],\"isIntellij\":false},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"],\"isIntellij\":false},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"],\"isIntellij\":false},{\"name\":\"intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":[\"intellij\",\"intellij-idea\",\"intellij-idea-plugin\",\"intellij-platform\",\"intellij-plugin\",\"intellij-plugins\",\"jetbrains-plugin\"],\"isIntellij\":true}]}"
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 28
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Grouping And Aggregating"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"A `DataFrame` can be grouped by column keys, meaning its rows are split into groups based on the values in the key columns.\n",
"The `.groupBy { }` operation selects columns and groups the `DataFrame` by their values, using them as grouping keys.\n",
"\n",
"The result is a `GroupBy` — a `DataFrame`-like structure that associates each key with the corresponding subset of the original `DataFrame`.\n",
"\n",
"Group `dfWithIsIntellij` by \"isIntellij\":"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:05.957677Z",
"start_time": "2025-05-27T17:21:05.783597Z"
}
},
"cell_type": "code",
"source": [
"val groupedByIsIntellij = dfWithIsIntellij.groupBy { isIntellij }\n",
"groupedByIsIntellij"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_20()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_20\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394970&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;GroupBy&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;true&quot;,&quot;false&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;group: DataFrame&lt;*&gt;&bsol;&quot;&gt;group&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [{ frameId: -1476394969, value: &quot;&lt;b&gt;DataFrame 7 x 4&lt;&sol;b&gt;&quot; },{ frameId: -1476394968, value: &quot;&lt;b&gt;DataFrame 17 x 4&lt;&sol;b&gt;&quot; }] }, \n",
"], id: -1476394970, rootId: -1476394970, totalRows: 2 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;ideavim&quot;,&quot;intellij-community&quot;,&quot;intellij-scala&quot;,&quot;intellij-plugins&quot;,&quot;idea-gitignore&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;starsCount: Int&bsol;&quot;&gt;starsCount&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1066&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1737&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1181&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: List&lt;String&gt;&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;ideavim&bsol;nintellij&bsol;nintellij-platform&bsol;njb-official&bsol;nkotlin&bsol;nvim&bsol;nvim-emulator&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;ideavim&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;code-editor&bsol;nide&bsol;nintellij&bsol;nintellij-community&bsol;nintellij-platform&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;code-editor&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ide&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;intellij-idea&bsol;nintellij-plugin&bsol;nscala&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;intellij-idea&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;scala&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;gitignore&bsol;nignore-files&bsol;nintellij&bsol;nintellij-plugin&bsol;njava&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;gitignore&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ignore-files&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;true&quot;,&quot;true&quot;,&quot;true&quot;,&quot;true&quot;,&quot;true&quot;] }, \n",
"], id: -1476394969, rootId: -1476394970, totalRows: 7 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;MPS&quot;,&quot;kotlin&quot;,&quot;Exposed&quot;,&quot;kotlin-web-site&quot;,&quot;swot&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;starsCount: Int&bsol;&quot;&gt;starsCount&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1241&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5688&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1074&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;1072&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: List&lt;String&gt;&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;domain-specific-language&bsol;ndsl&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;domain-specific-language&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;dsl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;compiler&bsol;ngradle-plugin&bsol;nintellij-plugin&bsol;nkotlin&bsol;nkotlin-library&bsol;nmaven-plugin&bsol;nprogramming-language&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;gradle-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intel&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;dao&bsol;nkotlin&bsol;norm&bsol;nsql&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;dao&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;orm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;sql&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;kotlin&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;] }, \n",
"], id: -1476394968, rootId: -1476394970, totalRows: 17 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394970) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_20() {\n",
" let elem = document.getElementById(\"iframe_out_20\");\n",
" resize_iframe_out_20(elem);\n",
" setInterval(resize_iframe_out_20, 5000, elem);\n",
" }\n",
" function resize_iframe_out_20(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394967\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th><th class=\"bottomBorder\" style=\"text-align:left\">group</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">true</td><td style=\"vertical-align:top\"><details><summary>DataFrame [7 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1476394966\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-scala</td><td style=\"vertical-align:top\">1066</td><td style=\"vertical-align:top\">[intellij-idea, intellij-plugin, scala]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">intellij-plugins</td><td style=\"vertical-align:top\">1737</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">idea-gitignore</td><td style=\"vertical-align:top\">1181</td><td style=\"vertical-align:top\">[gitignore, ignore-files, intellij, i<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr></tbody></table><p>... showing only top 5 of 7 rows</p></details></td></tr><tr><td style=\"vertical-align:top\">false</td><td style=\"vertical-align:top\"><details><summary>DataFrame [17 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1476394965\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">MPS</td><td style=\"vertical-align:top\">1241</td><td style=\"vertical-align:top\">[domain-specific-language, dsl]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlin-web-site</td><td style=\"vertical-align:top\">1074</td><td style=\"vertical-align:top\">[kotlin]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">swot</td><td style=\"vertical-align:top\">1072</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr></tbody></table><p>... showing only top 5 of 17 rows</p></details></td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394967\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"isIntellij\",\"group\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"},{\"kind\":\"FrameColumn\"}],\"nrow\":2,\"ncol\":2},\"kotlin_dataframe\":[{\"isIntellij\":true,\"group\":{\"data\":[{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"],\"isIntellij\":true},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"],\"isIntellij\":true},{\"name\":\"intellij-scala\",\"starsCount\":1066,\"topics\":[\"intellij-idea\",\"intellij-plugin\",\"scala\"],\"isIntellij\":true},{\"name\":\"intellij-plugins\",\"starsCount\":1737,\"topics\":[\"\"],\"isIntellij\":true},{\"name\":\"idea-gitignore\",\"starsCount\":1181,\"topics\":[\"gitignore\",\"ignore-files\",\"intellij\",\"intellij-plugin\",\"java\"],\"isIntellij\":true},{\"name\":\"gradle-intellij-plugin\",\"starsCount\":1058,\"topics\":[\"gradle\",\"gradle-intellij-plugin\",\"gradle-kotlin-dsl\",\"groovy\",\"intellij\",\"intellij-ides\",\"intellij-platform\",\"intellij-plugin\",\"intellij-sdk\",\"jetbrains-plugin\",\"kotlin\",\"plugin-verifier\",\"publishing-dsl\",\"setup-dsl\",\"teamcity\",\"travis-configuration\"],\"isIntellij\":true},{\"name\":\"intellij-platform-plugin-template\",\"starsCount\":1133,\"topics\":[\"intellij\",\"intellij-idea\",\"intellij-idea-plugin\",\"intellij-platform\",\"intellij-plugin\",\"intellij-plugins\",\"jetbrains-plugin\"],\"isIntellij\":true}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"ncol\":4,\"nrow\":7}}},{\"isIntellij\":false,\"group\":{\"data\":[{\"name\":\"MPS\",\"starsCount\":1241,\"topics\":[\"domain-specific-language\",\"dsl\"],\"isIntellij\":false},{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"],\"isIntellij\":false},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"],\"isIntellij\":false},{\"name\":\"kotlin-web-site\",\"starsCount\":1074,\"topics\":[\"kotlin\"],\"isIntellij\":false},{\"name\":\"swot\",\"starsCount\":1072,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"phpstorm-stubs\",\"starsCount\":1110,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"svg-sprite-loader\",\"starsCount\":1815,\"topics\":[\"sprite\",\"svg\",\"svg-sprite\",\"svg-stack\",\"webpack\",\"webpack-loader\",\"webpack-plugin\",\"webpack2\",\"webpack3\"],\"isIntellij\":false},{\"name\":\"resharper-unity\",\"starsCount\":1017,\"topics\":[\"hacktoberfest\",\"jetbrains\",\"plugin\",\"resharper\",\"resharper-plugin\",\"rider\",\"unity\",\"unity-editor\"],\"isIntellij\":false},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"],\"isIntellij\":false},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"],\"isIntellij\":false},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"],\"isIntellij\":false},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"],\"isIntellij\":false},{\"name\":\"skija\",\"starsCount\":2242,\"topics\":[\"2d\",\"graphics\",\"java\",\"skia\"],\"isIntellij\":false},{\"name\":\"projector-docker\",\"starsCount\":1853,\"topics\":[\"awt\",\"docker\",\"swing\"],\"isIntellij\":false},{\"name\":\"projector-server\",\"starsCount\":1025,\"topics\":[\"awt\",\"swing\"],\"isIntellij\":false},{\"name\":\"compose-jb\",\"starsCount\":6805,\"topics\":[\"android\",\"awt\",\"compose\",\"declarative-ui\",\"desktop\",\"gui\",\"javascript\",\"kotlin\",\"multiplatform\",\"reactive\",\"swing\",\"ui\"],\"isIntellij\":false}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"ncol\":4,\"nrow\":17}}}]}"
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 19
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"A `GroupBy` can be aggregated — that is, you can compute one or several summary statistics for each group.\n",
"The result of the aggregation is a `DataFrame` containing the key columns along with new columns holding the computed statistics for a corresponding group.\n",
"\n",
"For example, `count()` computes size of a group:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:06.108708Z",
"start_time": "2025-05-27T17:21:05.960300Z"
}
},
"cell_type": "code",
"source": "groupedByIsIntellij.count()",
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_21()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_21\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394964&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 2, columnsCount = 2&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;true&quot;,&quot;false&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;count: Int&bsol;&quot;&gt;count&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;7&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;17&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394964, rootId: -1476394964, totalRows: 2 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394964) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_21() {\n",
" let elem = document.getElementById(\"iframe_out_21\");\n",
" resize_iframe_out_21(elem);\n",
" setInterval(resize_iframe_out_21, 5000, elem);\n",
" }\n",
" function resize_iframe_out_21(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394963\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th><th class=\"bottomBorder\" style=\"text-align:left\">count</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">true</td><td style=\"vertical-align:top\">7</td></tr><tr><td style=\"vertical-align:top\">false</td><td style=\"vertical-align:top\">17</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394963\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"isIntellij\",\"count\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":2,\"ncol\":2},\"kotlin_dataframe\":[{\"isIntellij\":true,\"count\":7},{\"isIntellij\":false,\"count\":17}]}"
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 20
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Compute several statistics with `.aggregate { }`, which provides a DSL for aggregating:"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:06.459635Z",
"start_time": "2025-05-27T17:21:06.111467Z"
}
},
"cell_type": "code",
"source": [
"groupedByIsIntellij.aggregate {\n",
" // Compute sum and max of \"starsCount\" within each group into \"sumStars\" and \"maxStars\" columns\n",
" sumOf { starsCount } into \"sumStars\"\n",
" maxOf { starsCount } into \"maxStars\"\n",
"}"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_22()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_22\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394962&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 2, columnsCount = 3&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;true&quot;,&quot;false&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;sumStars: Int&bsol;&quot;&gt;sumStars&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;25221&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;85392&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;maxStars: Int&bsol;&quot;&gt;maxStars&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"], id: -1476394962, rootId: -1476394962, totalRows: 2 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394962) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_22() {\n",
" let elem = document.getElementById(\"iframe_out_22\");\n",
" resize_iframe_out_22(elem);\n",
" setInterval(resize_iframe_out_22, 5000, elem);\n",
" }\n",
" function resize_iframe_out_22(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394961\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th><th class=\"bottomBorder\" style=\"text-align:left\">sumStars</th><th class=\"bottomBorder\" style=\"text-align:left\">maxStars</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">true</td><td style=\"vertical-align:top\">25221</td><td style=\"vertical-align:top\">12926</td></tr><tr><td style=\"vertical-align:top\">false</td><td style=\"vertical-align:top\">85392</td><td style=\"vertical-align:top\">39402</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394961\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"isIntellij\",\"sumStars\",\"maxStars\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":2,\"ncol\":3},\"kotlin_dataframe\":[{\"isIntellij\":true,\"sumStars\":25221,\"maxStars\":12926},{\"isIntellij\":false,\"sumStars\":85392,\"maxStars\":39402}]}"
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 21
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Sorting Rows"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"`.sort {}`/`.sortByDesc` sorts rows by value in selected columns, returning a DataFrame.\n",
"\n",
"`take(n)` returns a new `DataFrame` with the first `n` rows.\n",
"\n",
"Combine them to get Top-10 repositories by number of stars:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:06.681243Z",
"start_time": "2025-05-27T17:21:06.468520Z"
}
},
"cell_type": "code",
"source": [
"val dfTop10 = dfWithIsIntellij\n",
" // Sort by \"starsCount\" value descending\n",
" .sortByDesc { starsCount }\n",
" .take(10)\n",
"dfTop10"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe onload=\"o_resize_iframe_out_23()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_23\" frameBorder=\"0\" srcdoc=\" &lt;html theme='dark'&gt;\n",
" &lt;head&gt;\n",
" &lt;style type=&quot;text&sol;css&quot;&gt;\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody &gt; tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover &gt; td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"&sol;* formatting *&sol;\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
":root {\n",
" --scroll-bg: #f5f5f5;\n",
" --scroll-fg: #b3b3b3;\n",
"}\n",
":root[theme=&quot;dark&quot;], :root [data-jp-theme-light=&quot;false&quot;]{\n",
" --scroll-bg: #3c3c3c;\n",
" --scroll-fg: #97e1fb;\n",
"}\n",
"body {\n",
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
"}\n",
"body::-webkit-scrollbar {\n",
" width: 10px; &sol;* Mostly for vertical scrollbars *&sol;\n",
" height: 10px; &sol;* Mostly for horizontal scrollbars *&sol;\n",
"}\n",
"body::-webkit-scrollbar-thumb {\n",
" background-color: var(--scroll-fg);\n",
"}\n",
"body::-webkit-scrollbar-track {\n",
" background-color: var(--scroll-bg);\n",
"}\n",
" &lt;&sol;style&gt;\n",
" &lt;&sol;head&gt;\n",
" &lt;body&gt;\n",
" &lt;table class=&quot;dataframe&quot; id=&quot;df_-1476394960&quot;&gt;&lt;&sol;table&gt;\n",
"\n",
"&lt;p class=&quot;dataframe_description&quot;&gt;DataFrame: rowsCount = 10, columnsCount = 4&lt;&sol;p&gt;\n",
"\n",
" &lt;&sol;body&gt;\n",
" &lt;script&gt;\n",
" (function () {\n",
" window.DataFrame = window.DataFrame || new (function () {\n",
" this.addTable = function (df) {\n",
" let cols = df.cols;\n",
" for (let i = 0; i &lt; cols.length; i++) {\n",
" for (let c of cols[i].children) {\n",
" cols[c].parent = i;\n",
" }\n",
" }\n",
" df.nrow = 0\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" if (df.cols[i].values.length &gt; df.nrow) df.nrow = df.cols[i].values.length\n",
" }\n",
" if (df.id === df.rootId) {\n",
" df.expandedFrames = new Set()\n",
" df.childFrames = {}\n",
" const table = this.getTableElement(df.id)\n",
" table.df = df\n",
" for (let i = 0; i &lt; df.cols.length; i++) {\n",
" let col = df.cols[i]\n",
" if (col.parent === undefined &amp;&amp; col.children.length &gt; 0) col.expanded = true\n",
" }\n",
" } else {\n",
" const rootDf = this.getTableData(df.rootId)\n",
" rootDf.childFrames[df.id] = df\n",
" }\n",
" }\n",
"\n",
" this.computeRenderData = function (df) {\n",
" let result = []\n",
" let pos = 0\n",
" for (let col = 0; col &lt; df.cols.length; col++) {\n",
" if (df.cols[col].parent === undefined)\n",
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
" }\n",
" for (let i = 0; i &lt; result.length; i++) {\n",
" let row = result[i]\n",
" for (let j = 0; j &lt; row.length; j++) {\n",
" let cell = row[j]\n",
" if (j === 0)\n",
" cell.leftBd = false\n",
" if (j &lt; row.length - 1) {\n",
" let nextData = row[j + 1]\n",
" if (nextData.leftBd) cell.rightBd = true\n",
" else if (cell.rightBd) nextData.leftBd = true\n",
" } else cell.rightBd = false\n",
" }\n",
" }\n",
" return result\n",
" }\n",
"\n",
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
" if (result.length === depth) {\n",
" const array = [];\n",
" if (pos &gt; 0) {\n",
" let j = 0\n",
" for (let i = 0; j &lt; pos; i++) {\n",
" let c = result[depth - 1][i]\n",
" j += c.span\n",
" let copy = Object.assign({empty: true}, c)\n",
" array.push(copy)\n",
" }\n",
" }\n",
" result.push(array)\n",
" }\n",
" const col = cols[colId];\n",
" let size = 0;\n",
" if (col.expanded) {\n",
" let childPos = pos\n",
" for (let i = 0; i &lt; col.children.length; i++) {\n",
" let child = col.children[i]\n",
" let childLeft = i === 0 &amp;&amp; (col.children.length &gt; 1 || leftBorder)\n",
" let childRight = i === col.children.length - 1 &amp;&amp; (col.children.length &gt; 1 || rightBorder)\n",
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
" childPos += childSize\n",
" size += childSize\n",
" }\n",
" } else {\n",
" for (let i = depth + 1; i &lt; result.length; i++)\n",
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
" size = 1\n",
" }\n",
" let left = leftBorder\n",
" let right = rightBorder\n",
" if (size &gt; 1) {\n",
" left = true\n",
" right = true\n",
" }\n",
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
" return size\n",
" }\n",
"\n",
" this.getTableElement = function (id) {\n",
" return document.getElementById(&quot;df_&quot; + id)\n",
" }\n",
"\n",
" this.getTableData = function (id) {\n",
" return this.getTableElement(id).df\n",
" }\n",
"\n",
" this.createExpander = function (isExpanded) {\n",
" const svgNs = &quot;http:&sol;&sol;www.w3.org&sol;2000&sol;svg&quot;\n",
" let svg = document.createElementNS(svgNs, &quot;svg&quot;)\n",
" svg.classList.add(&quot;expanderSvg&quot;)\n",
" let path = document.createElementNS(svgNs, &quot;path&quot;)\n",
" if (isExpanded) {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;0 -2 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z&quot;)\n",
" } else {\n",
" svg.setAttribute(&quot;viewBox&quot;, &quot;-2 0 8 8&quot;)\n",
" path.setAttribute(&quot;d&quot;, &quot;M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z&quot;)\n",
" }\n",
" path.setAttribute(&quot;fill&quot;, &quot;currentColor&quot;)\n",
" svg.appendChild(path)\n",
" return svg\n",
" }\n",
"\n",
" this.renderTable = function (id) {\n",
"\n",
" let table = this.getTableElement(id)\n",
"\n",
" if (table === null) return\n",
"\n",
" table.innerHTML = &quot;&quot;\n",
"\n",
" let df = table.df\n",
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
"\n",
" &sol;&sol; header\n",
" let header = document.createElement(&quot;thead&quot;)\n",
" table.appendChild(header)\n",
"\n",
" let renderData = this.computeRenderData(df)\n",
" for (let j = 0; j &lt; renderData.length; j++) {\n",
" let rowData = renderData[j]\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" let isLastRow = j === renderData.length - 1\n",
" header.appendChild(tr);\n",
" for (let i = 0; i &lt; rowData.length; i++) {\n",
" let cell = rowData[i]\n",
" let th = document.createElement(&quot;th&quot;);\n",
" th.setAttribute(&quot;colspan&quot;, cell.span)\n",
" let colId = cell.id\n",
" let col = df.cols[colId];\n",
" if (!cell.empty) {\n",
" if (col.children.length === 0) {\n",
" th.innerHTML = col.name\n",
" } else {\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" col.expanded = !col.expanded\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(col.expanded))\n",
" link.innerHTML += col.name\n",
" th.appendChild(link)\n",
" }\n",
" }\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (isLastRow)\n",
" classes += &quot; bottomBorder&quot;\n",
" if (classes.length &gt; 0)\n",
" th.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(th)\n",
" }\n",
" }\n",
"\n",
" &sol;&sol; body\n",
" let body = document.createElement(&quot;tbody&quot;)\n",
" table.appendChild(body)\n",
"\n",
" let columns = renderData.pop()\n",
" for (let row = 0; row &lt; df.nrow; row++) {\n",
" let tr = document.createElement(&quot;tr&quot;);\n",
" body.appendChild(tr)\n",
" for (let i = 0; i &lt; columns.length; i++) {\n",
" let cell = columns[i]\n",
" let td = document.createElement(&quot;td&quot;);\n",
" let colId = cell.id\n",
" let col = df.cols[colId]\n",
" let classes = (cell.leftBd ? &quot; leftBorder&quot; : &quot;&quot;) + (cell.rightBd ? &quot; rightBorder&quot; : &quot;&quot;)\n",
" if (col.rightAlign)\n",
" classes += &quot; rightAlign&quot;\n",
" if (classes.length &gt; 0)\n",
" td.setAttribute(&quot;class&quot;, classes)\n",
" tr.appendChild(td)\n",
" let value = col.values[row]\n",
" if (value.frameId !== undefined) {\n",
" let frameId = value.frameId\n",
" let expanded = rootDf.expandedFrames.has(frameId)\n",
" let link = document.createElement(&quot;a&quot;)\n",
" link.className = &quot;expander&quot;\n",
" let that = this\n",
" link.onclick = function () {\n",
" if (rootDf.expandedFrames.has(frameId))\n",
" rootDf.expandedFrames.delete(frameId)\n",
" else rootDf.expandedFrames.add(frameId)\n",
" that.renderTable(id)\n",
" }\n",
" link.appendChild(this.createExpander(expanded))\n",
" link.innerHTML += value.value\n",
" if (expanded) {\n",
" td.appendChild(link)\n",
" td.appendChild(document.createElement(&quot;p&quot;))\n",
" const childTable = document.createElement(&quot;table&quot;)\n",
" childTable.className = &quot;dataframe&quot;\n",
" childTable.id = &quot;df_&quot; + frameId\n",
" let childDf = rootDf.childFrames[frameId]\n",
" childTable.df = childDf\n",
" td.appendChild(childTable)\n",
" this.renderTable(frameId)\n",
" if (childDf.nrow !== childDf.totalRows) {\n",
" const footer = document.createElement(&quot;p&quot;)\n",
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
" td.appendChild(footer)\n",
" }\n",
" } else {\n",
" td.appendChild(link)\n",
" }\n",
" } else if (value.style !== undefined) {\n",
" td.innerHTML = value.value\n",
" td.setAttribute(&quot;style&quot;, value.style)\n",
" } else td.innerHTML = value\n",
" this.nodeScriptReplace(td)\n",
" }\n",
" }\n",
" }\n",
"\n",
" this.nodeScriptReplace = function (node) {\n",
" if (this.nodeScriptIs(node) === true) {\n",
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
" } else {\n",
" let i = -1, children = node.childNodes;\n",
" while (++i &lt; children.length) {\n",
" this.nodeScriptReplace(children[i]);\n",
" }\n",
" }\n",
"\n",
" return node;\n",
" }\n",
"\n",
" this.nodeScriptClone = function (node) {\n",
" let script = document.createElement(&quot;script&quot;);\n",
" script.text = node.innerHTML;\n",
"\n",
" let i = -1, attrs = node.attributes, attr;\n",
" while (++i &lt; attrs.length) {\n",
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
" }\n",
" return script;\n",
" }\n",
"\n",
" this.nodeScriptIs = function (node) {\n",
" return node.tagName === 'SCRIPT';\n",
" }\n",
" })()\n",
"\n",
" window.call_DataFrame = function (f) {\n",
" return f();\n",
" };\n",
"\n",
" let funQueue = window[&quot;kotlinQueues&quot;] &amp;&amp; window[&quot;kotlinQueues&quot;][&quot;DataFrame&quot;];\n",
" if (funQueue) {\n",
" funQueue.forEach(function (f) {\n",
" f();\n",
" });\n",
" funQueue = [];\n",
" }\n",
"})()\n",
"\n",
"&sol;*&lt;!--*&sol;\n",
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: &quot;&lt;span title=&bsol;&quot;name: String&bsol;&quot;&gt;name&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;kotlin&quot;,&quot;intellij-community&quot;,&quot;kotlin-native&quot;,&quot;compose-jb&quot;,&quot;ideavim&quot;,&quot;JetBrainsMono&quot;,&quot;Exposed&quot;,&quot;ring-ui&quot;,&quot;kotlinconf-app&quot;,&quot;create-react-kotlin-app&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;starsCount: Int&bsol;&quot;&gt;starsCount&lt;&sol;span&gt;&quot;, children: [], rightAlign: true, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;39402&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;12926&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;7101&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6805&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6120&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;6059&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;5688&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2836&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2628&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;numbers&bsol;&quot;&gt;2424&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;topics: List&lt;String&gt;&bsol;&quot;&gt;topics&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;compiler&bsol;ngradle-plugin&bsol;nintellij-plugin&bsol;nkotlin&bsol;nkotlin-library&bsol;nmaven-plugin&bsol;nprogramming-language&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;gradle-plugin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intel&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;code-editor&bsol;nide&bsol;nintellij&bsol;nintellij-community&bsol;nintellij-platform&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;code-editor&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ide&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;i&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;c&bsol;ncompiler&bsol;nkotlin&bsol;nllvm&bsol;nobjective-c&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;c&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;compiler&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;llvm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;objective-c&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;android&bsol;nawt&bsol;ncompose&bsol;ndeclarative-ui&bsol;ndesktop&bsol;ngui&bsol;njavascript&bsol;nkotlin&bsol;nmultiplatform&bsol;nreactive&bsol;nswing&bsol;nui&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;android&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;awt&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;compose&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;declara&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;ideavim&bsol;nintellij&bsol;nintellij-platform&bsol;njb-official&bsol;nkotlin&bsol;nvim&bsol;nvim-emulator&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;ideavim&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;intellij-pl&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;coding-font&bsol;nfont&bsol;nligatures&bsol;nmonospaced-font&bsol;nprogramming-font&bsol;nprogramming-ligatures&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;coding-font&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;font&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;ligatures&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;dao&bsol;nkotlin&bsol;norm&bsol;nsql&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;dao&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;kotlin&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;orm&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;sql&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;components&bsol;njetbrains-ui&bsol;nreact&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;components&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains-ui&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;react&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;,&quot;&lt;span class=&bsol;&quot;formatted&bsol;&quot; title=&bsol;&quot;create-react-app&bsol;njetbrains-ui&bsol;nkotlin&bsol;nreact&bsol;nwebpack&bsol;&quot;&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;[&lt;&sol;span&gt;create-react-app&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;jetbrains-ui&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;, &lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;...&lt;&sol;span&gt;&lt;span class=&bsol;&quot;structural&bsol;&quot;&gt;]&lt;&sol;span&gt;&lt;&sol;span&gt;&quot;] }, \n",
"{ name: &quot;&lt;span title=&bsol;&quot;isIntellij: Boolean&bsol;&quot;&gt;isIntellij&lt;&sol;span&gt;&quot;, children: [], rightAlign: false, values: [&quot;false&quot;,&quot;true&quot;,&quot;false&quot;,&quot;false&quot;,&quot;true&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;,&quot;false&quot;] }, \n",
"], id: -1476394960, rootId: -1476394960, totalRows: 10 } ) });\n",
"&sol;*--&gt;*&sol;\n",
"\n",
"call_DataFrame(function() { DataFrame.renderTable(-1476394960) });\n",
"\n",
"\n",
" &lt;&sol;script&gt;\n",
" &lt;&sol;html&gt;\"></iframe>\n",
" <script>\n",
" function o_resize_iframe_out_23() {\n",
" let elem = document.getElementById(\"iframe_out_23\");\n",
" resize_iframe_out_23(elem);\n",
" setInterval(resize_iframe_out_23, 5000, elem);\n",
" }\n",
" function resize_iframe_out_23(el) {\n",
" let h = el.contentWindow.document.body.scrollHeight;\n",
" el.height = h === 0 ? 0 : h + 41;\n",
" }\n",
" </script> <html theme='dark'>\n",
" <head>\n",
" <style type=\"text/css\">\n",
" :root {\n",
" --background: #fff;\n",
" --background-odd: #f5f5f5;\n",
" --background-hover: #d9edfd;\n",
" --header-text-color: #474747;\n",
" --text-color: #848484;\n",
" --text-color-dark: #000;\n",
" --text-color-medium: #737373;\n",
" --text-color-pale: #b3b3b3;\n",
" --inner-border-color: #aaa;\n",
" --bold-border-color: #000;\n",
" --link-color: #296eaa;\n",
" --link-color-pale: #296eaa;\n",
" --link-hover: #1a466c;\n",
"}\n",
"\n",
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n",
" --background: #303030;\n",
" --background-odd: #3c3c3c;\n",
" --background-hover: #464646;\n",
" --header-text-color: #dddddd;\n",
" --text-color: #b3b3b3;\n",
" --text-color-dark: #dddddd;\n",
" --text-color-medium: #b2b2b2;\n",
" --text-color-pale: #737373;\n",
" --inner-border-color: #707070;\n",
" --bold-border-color: #777777;\n",
" --link-color: #008dc0;\n",
" --link-color-pale: #97e1fb;\n",
" --link-hover: #00688e;\n",
"}\n",
"\n",
"p.dataframe_description {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe {\n",
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n",
" font-size: 12px;\n",
" background-color: var(--background);\n",
" color: var(--text-color-dark);\n",
" border: none;\n",
" border-collapse: collapse;\n",
"}\n",
"\n",
"table.dataframe th, td {\n",
" padding: 6px;\n",
" border: 1px solid transparent;\n",
" text-align: left;\n",
"}\n",
"\n",
"table.dataframe th {\n",
" background-color: var(--background);\n",
" color: var(--header-text-color);\n",
"}\n",
"\n",
"table.dataframe td {\n",
" vertical-align: top;\n",
" white-space: nowrap;\n",
"}\n",
"\n",
"table.dataframe th.bottomBorder {\n",
" border-bottom-color: var(--bold-border-color);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(odd) {\n",
" background: var(--background-odd);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:nth-child(even) {\n",
" background: var(--background);\n",
"}\n",
"\n",
"table.dataframe tbody > tr:hover {\n",
" background: var(--background-hover);\n",
"}\n",
"\n",
"table.dataframe a {\n",
" cursor: pointer;\n",
" color: var(--link-color);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"table.dataframe tr:hover > td a {\n",
" color: var(--link-color-pale);\n",
"}\n",
"\n",
"table.dataframe a:hover {\n",
" color: var(--link-hover);\n",
" text-decoration: underline;\n",
"}\n",
"\n",
"table.dataframe img {\n",
" max-width: fit-content;\n",
"}\n",
"\n",
"table.dataframe th.complex {\n",
" background-color: var(--background);\n",
" border: 1px solid var(--background);\n",
"}\n",
"\n",
"table.dataframe .leftBorder {\n",
" border-left-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightBorder {\n",
" border-right-color: var(--inner-border-color);\n",
"}\n",
"\n",
"table.dataframe .rightAlign {\n",
" text-align: right;\n",
"}\n",
"\n",
"table.dataframe .expanderSvg {\n",
" width: 8px;\n",
" height: 8px;\n",
" margin-right: 3px;\n",
"}\n",
"\n",
"table.dataframe .expander {\n",
" display: flex;\n",
" align-items: center;\n",
"}\n",
"\n",
"/* formatting */\n",
"\n",
"table.dataframe .null {\n",
" color: var(--text-color-pale);\n",
"}\n",
"\n",
"table.dataframe .structural {\n",
" color: var(--text-color-medium);\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .dataFrameCaption {\n",
" font-weight: bold;\n",
"}\n",
"\n",
"table.dataframe .numbers {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe td:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"table.dataframe tr:hover .formatted .structural, .null {\n",
" color: var(--text-color-dark);\n",
"}\n",
"\n",
"\n",
" </style>\n",
" </head>\n",
" <body>\n",
" <table class=\"dataframe\" id=\"static_df_-1476394959\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">name</th><th class=\"bottomBorder\" style=\"text-align:left\">starsCount</th><th class=\"bottomBorder\" style=\"text-align:left\">topics</th><th class=\"bottomBorder\" style=\"text-align:left\">isIntellij</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">kotlin</td><td style=\"vertical-align:top\">39402</td><td style=\"vertical-align:top\">[compiler, gradle-plugin, intellij-pl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">intellij-community</td><td style=\"vertical-align:top\">12926</td><td style=\"vertical-align:top\">[code-editor, ide, intellij, intellij<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">kotlin-native</td><td style=\"vertical-align:top\">7101</td><td style=\"vertical-align:top\">[c, compiler, kotlin, llvm, objective-c]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">compose-jb</td><td style=\"vertical-align:top\">6805</td><td style=\"vertical-align:top\">[android, awt, compose, declarative-u<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">ideavim</td><td style=\"vertical-align:top\">6120</td><td style=\"vertical-align:top\">[ideavim, intellij, intellij-platform<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">true</td></tr><tr><td style=\"vertical-align:top\">JetBrainsMono</td><td style=\"vertical-align:top\">6059</td><td style=\"vertical-align:top\">[coding-font, font, ligatures, monosp<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">Exposed</td><td style=\"vertical-align:top\">5688</td><td style=\"vertical-align:top\">[dao, kotlin, orm, sql]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">ring-ui</td><td style=\"vertical-align:top\">2836</td><td style=\"vertical-align:top\">[components, jetbrains-ui, react]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">kotlinconf-app</td><td style=\"vertical-align:top\">2628</td><td style=\"vertical-align:top\">[]</td><td style=\"vertical-align:top\">false</td></tr><tr><td style=\"vertical-align:top\">create-react-kotlin-app</td><td style=\"vertical-align:top\">2424</td><td style=\"vertical-align:top\">[create-react-app, jetbrains-ui, kotl<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">false</td></tr></tbody></table>\n",
" </body>\n",
" <script>\n",
" document.getElementById(\"static_df_-1476394959\").style.display = \"none\";\n",
" </script>\n",
" </html>"
],
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"name\",\"starsCount\",\"topics\",\"isIntellij\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Boolean\"}],\"nrow\":10,\"ncol\":4},\"kotlin_dataframe\":[{\"name\":\"kotlin\",\"starsCount\":39402,\"topics\":[\"compiler\",\"gradle-plugin\",\"intellij-plugin\",\"kotlin\",\"kotlin-library\",\"maven-plugin\",\"programming-language\"],\"isIntellij\":false},{\"name\":\"intellij-community\",\"starsCount\":12926,\"topics\":[\"code-editor\",\"ide\",\"intellij\",\"intellij-community\",\"intellij-platform\"],\"isIntellij\":true},{\"name\":\"kotlin-native\",\"starsCount\":7101,\"topics\":[\"c\",\"compiler\",\"kotlin\",\"llvm\",\"objective-c\"],\"isIntellij\":false},{\"name\":\"compose-jb\",\"starsCount\":6805,\"topics\":[\"android\",\"awt\",\"compose\",\"declarative-ui\",\"desktop\",\"gui\",\"javascript\",\"kotlin\",\"multiplatform\",\"reactive\",\"swing\",\"ui\"],\"isIntellij\":false},{\"name\":\"ideavim\",\"starsCount\":6120,\"topics\":[\"ideavim\",\"intellij\",\"intellij-platform\",\"jb-official\",\"kotlin\",\"vim\",\"vim-emulator\"],\"isIntellij\":true},{\"name\":\"JetBrainsMono\",\"starsCount\":6059,\"topics\":[\"coding-font\",\"font\",\"ligatures\",\"monospaced-font\",\"programming-font\",\"programming-ligatures\"],\"isIntellij\":false},{\"name\":\"Exposed\",\"starsCount\":5688,\"topics\":[\"dao\",\"kotlin\",\"orm\",\"sql\"],\"isIntellij\":false},{\"name\":\"ring-ui\",\"starsCount\":2836,\"topics\":[\"components\",\"jetbrains-ui\",\"react\"],\"isIntellij\":false},{\"name\":\"kotlinconf-app\",\"starsCount\":2628,\"topics\":[\"\"],\"isIntellij\":false},{\"name\":\"create-react-kotlin-app\",\"starsCount\":2424,\"topics\":[\"create-react-app\",\"jetbrains-ui\",\"kotlin\",\"react\",\"webpack\"],\"isIntellij\":false}]}"
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 22
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Plotting With Kandy"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"Kandy is a Kotlin plotting library designed to bring Kotlin DataFrame features into chart creation, providing a convenient and typesafe way to build data visualizations.\n",
"\n",
"Kandy can be loaded into notebook using `%use kandy`:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:09.706774Z",
"start_time": "2025-05-27T17:21:06.684707Z"
}
},
"cell_type": "code",
"source": "%use kandy",
"outputs": [],
"execution_count": 23
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Build a simple bar chart with the `.plot { }` extension for DataFrame, that allows to use extension properties inside Kandy plotting DSL (a plot will be rendered as output after cell execution):"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:11.687983Z",
"start_time": "2025-05-27T17:21:09.711112Z"
}
},
"cell_type": "code",
"source": [
"dfTop10.plot {\n",
" bars {\n",
" x(name)\n",
" y(starsCount)\n",
" }\n",
"\n",
" layout.title = \"Top 10 JetBrains repositories by stars count\"\n",
"}"
],
"outputs": [
{
"data": {
"text/html": [
" <iframe src='about:blank' style='border:none !important;' width='600' height='400' srcdoc=\"&lt;html lang=&quot;en&quot;>\n",
" &lt;head>\n",
" &lt;meta charset=&quot;UTF-8&quot;>\n",
" &lt;style> html, body { margin: 0; overflow: hidden; } &lt;/style>\n",
" &lt;script type=&quot;text/javascript&quot; data-lets-plot-script=&quot;library&quot; src=&quot;https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v4.5.1/js-package/distr/lets-plot.min.js&quot;>&lt;/script>\n",
" &lt;/head>\n",
" &lt;body>\n",
" &lt;div id=&quot;TNndR2&quot;>&lt;/div>\n",
" &lt;script type=&quot;text/javascript&quot; data-lets-plot-script=&quot;plot&quot;>\n",
" \n",
" (function() {\n",
" // ----------\n",
" \n",
" var plotSpec={\n",
"&quot;ggtitle&quot;:{\n",
"&quot;text&quot;:&quot;Top 10 JetBrains repositories by stars count&quot;\n",
"},\n",
"&quot;mapping&quot;:{\n",
"},\n",
"&quot;data&quot;:{\n",
"&quot;starsCount&quot;:[39402.0,12926.0,7101.0,6805.0,6120.0,6059.0,5688.0,2836.0,2628.0,2424.0],\n",
"&quot;name&quot;:[&quot;kotlin&quot;,&quot;intellij-community&quot;,&quot;kotlin-native&quot;,&quot;compose-jb&quot;,&quot;ideavim&quot;,&quot;JetBrainsMono&quot;,&quot;Exposed&quot;,&quot;ring-ui&quot;,&quot;kotlinconf-app&quot;,&quot;create-react-kotlin-app&quot;]\n",
"},\n",
"&quot;kind&quot;:&quot;plot&quot;,\n",
"&quot;scales&quot;:[{\n",
"&quot;aesthetic&quot;:&quot;x&quot;,\n",
"&quot;discrete&quot;:true\n",
"},{\n",
"&quot;aesthetic&quot;:&quot;y&quot;,\n",
"&quot;limits&quot;:[null,null]\n",
"}],\n",
"&quot;layers&quot;:[{\n",
"&quot;mapping&quot;:{\n",
"&quot;x&quot;:&quot;name&quot;,\n",
"&quot;y&quot;:&quot;starsCount&quot;\n",
"},\n",
"&quot;stat&quot;:&quot;identity&quot;,\n",
"&quot;sampling&quot;:&quot;none&quot;,\n",
"&quot;inherit_aes&quot;:false,\n",
"&quot;position&quot;:&quot;dodge&quot;,\n",
"&quot;geom&quot;:&quot;bar&quot;,\n",
"&quot;data&quot;:{\n",
"}\n",
"}],\n",
"&quot;data_meta&quot;:{\n",
"&quot;series_annotations&quot;:[{\n",
"&quot;type&quot;:&quot;str&quot;,\n",
"&quot;column&quot;:&quot;name&quot;\n",
"},{\n",
"&quot;type&quot;:&quot;int&quot;,\n",
"&quot;column&quot;:&quot;starsCount&quot;\n",
"}]\n",
"},\n",
"&quot;spec_id&quot;:&quot;2&quot;\n",
"};\n",
" var containerDiv = document.getElementById(&quot;TNndR2&quot;);\n",
" \n",
" var toolbar = null;\n",
" var plotContainer = containerDiv; \n",
" \n",
" var options = {\n",
" sizing: {\n",
" width_mode: &quot;fixed&quot;,\n",
" height_mode: &quot;fixed&quot;,\n",
" width: 600.0,\n",
" height: 400.0\n",
" }\n",
" };\n",
" var fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer, options);\n",
" if (toolbar) {\n",
" toolbar.bind(fig);\n",
" }\n",
" \n",
" // ----------\n",
" })();\n",
" \n",
" &lt;/script>\n",
" &lt;/body>\n",
"&lt;/html>\"></iframe> <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" display=\"block\" class=\"plt-container\" id=7e049ee7-ecf4-4493-876e-0d8be9430ba6 width=\"100%\" height=\"100%\" style=\"max-width: 600.0px; max-height: 400.0px;\" viewBox=\"0 0 600.0 400.0\" preserveAspectRatio=\"xMinYMin meet\">\n",
" <style type=\"text/css\">\n",
" .plt-container {\n",
" font-family: Lucida Grande, sans-serif;\n",
" user-select: none;\n",
" -webkit-user-select: none;\n",
" -moz-user-select: none;\n",
" -ms-user-select: none;\n",
"}\n",
"text {\n",
" text-rendering: optimizeLegibility;\n",
"}\n",
"#pgZ7Chi .plot-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 16.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .plot-subtitle {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .plot-caption {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .hyperlink-element {\n",
"fill: #118ed8;\n",
"font-weight: normal;\n",
" font-style: normal;\n",
"}\n",
"#pgZ7Chi .legend-title {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .legend-item {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .axis-title-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .axis-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dKzxAjK .axis-tooltip-text-x {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .axis-title-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 15.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .axis-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dKzxAjK .axis-tooltip-text-y {\n",
"fill: #ffffff;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .facet-strip-text-x {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#pgZ7Chi .facet-strip-text-y {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dKzxAjK .tooltip-text {\n",
"fill: #474747;\n",
"font-weight: normal;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dKzxAjK .tooltip-title {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"#dKzxAjK .tooltip-label {\n",
"fill: #474747;\n",
"font-weight: bold;\n",
" font-style: normal;font-family: Lucida Grande, sans-serif;\n",
"font-size: 13.0px;\n",
"\n",
"}\n",
"\n",
" </style>\n",
" <g id=\"pgZ7Chi\">\n",
" <path fill-rule=\"evenodd\" fill=\"rgb(255,255,255)\" fill-opacity=\"1.0\" d=\"M0.0 0.0 L0.0 400.0 L600.0 400.0 L600.0 0.0 Z\">\n",
" </path>\n",
" <g transform=\"translate(29.5 26.5 ) \">\n",
" <g>\n",
" <g transform=\"translate(50.97651758668602 0.0 ) \">\n",
" <g>\n",
" <line x1=\"32.375268307636325\" y1=\"0.0\" x2=\"32.375268307636325\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"82.18337339630759\" y1=\"0.0\" x2=\"82.18337339630759\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"131.99147848497887\" y1=\"0.0\" x2=\"131.99147848497887\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"181.79958357365015\" y1=\"0.0\" x2=\"181.79958357365015\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"231.6076886623214\" y1=\"0.0\" x2=\"231.6076886623214\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"281.41579375099263\" y1=\"0.0\" x2=\"281.41579375099263\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"331.22389883966395\" y1=\"0.0\" x2=\"331.22389883966395\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"381.0320039283352\" y1=\"0.0\" x2=\"381.0320039283352\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"430.84010901700645\" y1=\"0.0\" x2=\"430.84010901700645\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"480.6482141056777\" y1=\"0.0\" x2=\"480.6482141056777\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(50.97651758668602 0.0 ) \">\n",
" <g>\n",
" <line x1=\"0.0\" y1=\"241.13961002434917\" x2=\"513.023482413314\" y2=\"241.13961002434917\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"182.85404800928364\" x2=\"513.023482413314\" y2=\"182.85404800928364\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"124.56848599421815\" x2=\"513.023482413314\" y2=\"124.56848599421815\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"66.28292397915266\" x2=\"513.023482413314\" y2=\"66.28292397915266\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" <line x1=\"0.0\" y1=\"7.997361964087133\" x2=\"513.023482413314\" y2=\"7.997361964087133\" stroke=\"rgb(233,233,233)\" stroke-opacity=\"1.0\" stroke-width=\"1.0\" fill=\"none\">\n",
" </line>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g clip-path=\"url(#cTgY3FQ)\" clip-bounds-jfx=\"[rect (50.97651758668602, 0.0), (513.023482413314, 241.13961002434917)]\">\n",
" <g transform=\"translate(50.97651758668602 0.0 ) \">\n",
" <g>\n",
" <g>\n",
" <rect x=\"458.2345668157757\" y=\"227.0111897918973\" height=\"14.128420232451873\" width=\"44.827294579804175\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"408.42646172710437\" y=\"225.82216432678996\" height=\"15.317445697559208\" width=\"44.82729457980412\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"358.6183566384331\" y=\"224.6098246368766\" height=\"16.52978538747257\" width=\"44.827294579804175\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"308.81025154976186\" y=\"207.9867823501799\" height=\"33.15282767416926\" width=\"44.82729457980412\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"259.0021464610906\" y=\"205.824387999421\" height=\"35.315222024928175\" width=\"44.82729457980412\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"209.19404137241932\" y=\"205.46884607112906\" height=\"35.6707639532201\" width=\"44.827294579804175\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"159.38593628374807\" y=\"201.47628507309707\" height=\"39.66332495125209\" width=\"44.82729457980412\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"109.57783119507678\" y=\"199.75103243745116\" height=\"41.38857758689801\" width=\"44.827294579804146\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"59.76972610640553\" y=\"165.79969256367548\" height=\"75.33991746067369\" width=\"44.827294579804146\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" <rect x=\"9.961621017734252\" y=\"11.482838572588065\" height=\"229.6567714517611\" width=\"44.827294579804146\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"1.0\" fill=\"rgb(17,142,216)\" fill-opacity=\"1.0\" stroke-width=\"1.6500000000000001\">\n",
" </rect>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"cTgY3FQ\">\n",
" <rect x=\"50.97651758668602\" y=\"0.0\" width=\"513.023482413314\" height=\"241.13961002434917\">\n",
" </rect>\n",
" </clipPath>\n",
" </defs>\n",
" </g>\n",
" <g>\n",
" <g transform=\"translate(50.97651758668602 241.13961002434917 ) \">\n",
" <g transform=\"translate(32.375268307636325 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>kotlin</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(82.18337339630759 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>intellij-community</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(131.99147848497887 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>kotlin-native</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(181.79958357365015 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>compose-jb</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(231.6076886623214 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>ideavim</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(281.41579375099263 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>JetBrainsMono</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(331.22389883966395 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>Exposed</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(381.0320039283352 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>ring-ui</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(430.84010901700645 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>kotlinconf-app</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(480.6482141056777 0.0 ) \">\n",
" <line stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" x2=\"0.0\" y2=\"4.0\">\n",
" </line>\n",
" <g transform=\"translate(0.0 7.0 ) rotate(-30.0 ) \">\n",
" <text class=\"axis-text-x\" text-anchor=\"end\" dy=\"0.7em\">\n",
" <tspan>create-react-kotlin-app</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <line x1=\"0.0\" y1=\"0.0\" x2=\"513.023482413314\" y2=\"0.0\" stroke-width=\"1.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\">\n",
" </line>\n",
" </g>\n",
" <g transform=\"translate(50.97651758668602 0.0 ) \">\n",
" <g transform=\"translate(0.0 241.13961002434917 ) \">\n",
" <g transform=\"translate(-3.0 0.0 ) \">\n",
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>0</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 182.85404800928364 ) \">\n",
" <g transform=\"translate(-3.0 0.0 ) \">\n",
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>10,000</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 124.56848599421815 ) \">\n",
" <g transform=\"translate(-3.0 0.0 ) \">\n",
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>20,000</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 66.28292397915266 ) \">\n",
" <g transform=\"translate(-3.0 0.0 ) \">\n",
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>30,000</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(0.0 7.997361964087133 ) \">\n",
" <g transform=\"translate(-3.0 0.0 ) \">\n",
" <text class=\"axis-text-y\" text-anchor=\"end\" dy=\"0.35em\">\n",
" <tspan>40,000</tspan>\n",
" </text>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g transform=\"translate(80.47651758668601 16.8 ) \">\n",
" <text class=\"plot-title\" y=\"0.0\">\n",
" <tspan>Top 10 JetBrains repositories by stars count</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(16.0 147.06980501217458 ) rotate(-90.0 ) \">\n",
" <text class=\"axis-title-y\" y=\"0.0\" text-anchor=\"middle\">\n",
" <tspan>starsCount</tspan>\n",
" </text>\n",
" </g>\n",
" <g transform=\"translate(336.988258793343 393.0 ) \">\n",
" <text class=\"axis-title-x\" y=\"0.0\" text-anchor=\"middle\">\n",
" <tspan>name</tspan>\n",
" </text>\n",
" </g>\n",
" <path fill=\"rgb(0,0,0)\" fill-opacity=\"0.0\" stroke=\"rgb(71,71,71)\" stroke-opacity=\"1.0\" stroke-width=\"0.0\" d=\"M0.0 0.0 L0.0 400.0 L600.0 400.0 L600.0 0.0 Z\" pointer-events=\"none\">\n",
" </path>\n",
" </g>\n",
" <g id=\"dKzxAjK\">\n",
" </g>\n",
"</svg>\n",
" <script>document.getElementById(\"7e049ee7-ecf4-4493-876e-0d8be9430ba6\").style.display = \"none\";</script>"
],
"application/plot+json": {
"output_type": "lets_plot_spec",
"output": {
"ggtitle": {
"text": "Top 10 JetBrains repositories by stars count"
},
"mapping": {},
"data": {
"starsCount": [
39402.0,
12926.0,
7101.0,
6805.0,
6120.0,
6059.0,
5688.0,
2836.0,
2628.0,
2424.0
],
"name": [
"kotlin",
"intellij-community",
"kotlin-native",
"compose-jb",
"ideavim",
"JetBrainsMono",
"Exposed",
"ring-ui",
"kotlinconf-app",
"create-react-kotlin-app"
]
},
"kind": "plot",
"scales": [
{
"aesthetic": "x",
"discrete": true
},
{
"aesthetic": "y",
"limits": [
null,
null
]
}
],
"layers": [
{
"mapping": {
"x": "name",
"y": "starsCount"
},
"stat": "identity",
"sampling": "none",
"inherit_aes": false,
"position": "dodge",
"geom": "bar"
}
],
"data_meta": {
"series_annotations": [
{
"type": "str",
"column": "name"
},
{
"type": "int",
"column": "starsCount"
}
]
}
},
"apply_color_scheme": true,
"swing_enabled": true
}
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 24
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Write DataFrame"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"`DataFrame` supports writing to (almost) all formats that it is capable of reading.\n",
"\n",
"Write to Excel:"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-05-27T17:21:14.823771Z",
"start_time": "2025-05-27T17:21:11.697776Z"
}
},
"cell_type": "code",
"source": "dfWithIsIntellij.writeExcel(\"jb_repos.xlsx\")",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2025-05-27T17:21:11.899521Z Execution of code 'dfWithIsIntellij.wri...' ERROR Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...\n"
]
}
],
"execution_count": 25
}
],
"metadata": {
"kernelspec": {
"display_name": "Kotlin",
"language": "kotlin",
"name": "kotlin"
},
"language_info": {
"name": "kotlin",
"version": "1.9.23",
"mimetype": "text/x-kotlin",
"file_extension": ".kt",
"pygments_lexer": "kotlin",
"codemirror_mode": "text/x-kotlin",
"nbconvert_exporter": ""
}
},
"nbformat": 4,
"nbformat_minor": 0
}