Pandas Vertical Concat
Stack Two DataFrames Into One Without Touching a Terminal
- a_dataframe
- b_dataframe
- DATAFRAME
You've got two CSVs of the same shape - sales for January and February, two batches of eval results, whatever - and you want to analyze them as one table. That's exactly what Pandas Vertical Concat does: it takes two DATAFRAME inputs and stacks them row-wise into a single DataFrame. No Python needed, just two wires and a node in the middle.
This is the glue node of the Data Analysis pack, the one you'll wire up constantly once you start loading multiple files into the same graph. ComfyUI wasn't built for tabular data, which is the whole reason this pack from Hide Inada (HowToSD) exists - it wraps pandas, Matplotlib and Seaborn as visual nodes so you can do data work without dropping to a script.
How it works
Under the hood it's a one-liner: pd.concat([a_dataframe, b_dataframe], axis=0, ignore_index=True). Axis 0 means rows, so a 3-row frame on top of a 5-row frame gives you an 8-row frame. The ignore_index=True part matters: it renumbers the index from 0 so you don't end up with duplicate row labels after stacking. The output is a fresh DATAFRAME you can feed anywhere a DataFrame is accepted - a plot node, Pandas Show DataFrame, or a save-to-CSV node.
Inputs and outputs
Only two inputs, both required:
a_dataframeandb_dataframe- the two DATAFRAME objects to stack. A is on top, B below it.
That's it. The output is a single DATAFRAME with the combined rows.
Install
From ComfyUI Manager: open the Manager menu, go to Custom Node Manager, search for "Data analysis", find ComfyUI-Data-Analysis, hit Install, restart ComfyUI, and reload the browser tab.
Manual install is the same as any custom node:
cd ComfyUI/custom_nodes
git clone https://github.com/HowToSD/ComfyUI-Data-Analysis.git
# rename so example workflows load correctly:
mv ComfyUI-Data-Analysis data-analysis
pip install -r requirements.txt
The README calls out that folder rename step explicitly - example workflows depend on the data-analysis folder name. Requirements pull in pandas, matplotlib, seaborn and friends; Manager handles those automatically, and no GPU or model downloads are involved.
Common issues
The classic stumble is column mismatch. concat doesn't validate anything, so if your two frames have different column names, you'll get NaN-filled columns where one frame lacks a column the other has - silently. Stacking same-schema tables (like monthly exports from the same source) is safe; mixing layouts will quietly bite you. If you need to reshape instead of stack, the pack has horizontal concat for side-by-side columns. And keep in mind the result is a view you can still manipulate - nothing here writes to disk unless you explicitly add a save node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| a_dataframe | DATAFRAME | — | |
| b_dataframe | DATAFRAME | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DATAFRAME | DATAFRAME | — |