<a id="skfolio-containers-concat"></a>

# skfolio.containers.concat

<a id="skfolio.containers.concat"></a>

### skfolio.containers.concat(panels, \*, verify_observations=False)

Concatenate panels along the observation axis.

This function performs strict vertical concatenation. All panels or panel views
must have identical assets, field names, field types, field dtypes, categorical
levels and 3D field metadata. Field arrays, observations, `active_mask` and
`estimation_mask` are concatenated on axis 0.

* **Parameters:**
  **panels** *iterable of AssetPanel or AssetPanelView*
  : Panels or panel views to concatenate. The iterable must contain at least one
    object.

  **verify_observations** *bool, default=False*
  : If `True`, raise an error when the concatenated observation labels contain
    duplicates.
* **Returns:**
  **panel** *AssetPanel*
  : Concatenated panel.

### Examples

```pycon
>>> from skfolio.containers import AssetPanel, concat
>>>
>>> panel_1 = AssetPanel(
...     fields={"returns": [[0.01, 0.02]]},
...     observations=["2024-01-01"],
...     asset_names=["A", "B"],
... )
>>> panel_2 = AssetPanel(
...     fields={"returns": [[0.03, 0.04]]},
...     observations=["2024-01-02"],
...     asset_names=["A", "B"],
... )
>>> concat([panel_1, panel_2])
AssetPanel(n_observations=2, n_assets=2, n_fields=1)
```

