Dataframes Haystack
📃 Description
dataframes-haystack is an extension for Haystack 2 that enables integration with dataframe libraries.
The dataframe libraries currently supported are:
The library offers various custom Converters components to transform dataframes into Haystack Document objects:
DataFrameFileToDocumentis a main generic converter that reads files using a dataframe backend and converts them intoDocumentobjects.FileToPandasDataFrameandFileToPolarsDataFrameread files and convert them into dataframes.PandasDataFrameConverterorPolarsDataFrameConverterconvert data stored in dataframes into HaystackDocumentobjects.
dataframes-haystack supports reading files in various formats:
- csv, json, parquet, excel, html, xml, orc, pickle, fixed-width format for
pandas. See the pandas documentation for more details. - csv, json, parquet, excel, avro, delta, ipc for
polars. See the polars documentation for more details.
🛠️ Installation
# for pandas
pip install "dataframes-haystack[pandas]"
# for polars
pip install "dataframes-haystack[polars]"
💻 Usage
[!TIP] See the Example Notebooks for complete examples.
DataFrameFileToDocument
You can leverage both pandas and polars backends (thanks to narwhals) to read your data!
from dataframes_haystack.components.converters import DataFrameFileToDocument
converter = DataFrameFileToDocument(content_column="text_str")
documents = converter.run(files=["file1.csv", "file2.csv"])
>>> documents
{'documents': [
Document(id=0, content: 'Hello world', meta: {}),
Document(id=1, content: 'Hello everyone', meta: {})
]}
pandas Converters
FileToPandasDataFrame
from dataframes_haystack.components.converters.pandas import FileToPandasDataFrame
converter = FileToPandasDataFrame(file_format="csv")
output_dataframe = converter.run(
file_paths=["data/doc1.csv", "data/doc2.csv"]
)
Result:
>>> output_dataframe
{'dataframe': <pandas.DataFrame>}
PandasDataFrameConverter
import pandas as pd
from dataframes_haystack.components.converters.pandas import PandasDataFrameConverter
df = pd.DataFrame({
"text": ["Hello world", "Hello everyone"],
"filename": ["doc1.txt", "doc2.txt"],
})
converter = PandasDataFrameConverter(content_column="text", meta_columns=["filename"])
documents = converter.run(df)
Result:
>>> documents
{'documents': [
Document(id=0, content: 'Hello world', meta: {'filename': 'doc1.txt'}),
Document(id=1, content: 'Hello everyone', meta: {'filename': 'doc2.txt'})
]}
polars Converters
FileToPolarsDataFrame
from dataframes_haystack.components.converters.polars import FileToPolarsDataFrame
converter = FileToPolarsDataFrame(file_format="csv")
output_dataframe = converter.run(
file_paths=["data/doc1.csv", "data/doc2.csv"]
)
Result:
>>> output_dataframe
{'dataframe': <polars.DataFrame>}
PolarsDataFrameConverter
import polars as pl
from dataframes_haystack.components.converters.polars import PolarsDataFrameConverter
df = pl.DataFrame({
"text": ["Hello world", "Hello everyone"],
"filename": ["doc1.txt", "doc2.txt"],
})
converter = PolarsDataFrameConverter(content_column="text", meta_columns=["filename"])
documents = converter.run(df)
Result:
>>> documents
{'documents': [
Document(id=0, content: 'Hello world', meta: {'filename': 'doc1.txt'}),
Document(id=1, content: 'Hello everyone', meta: {'filename': 'doc2.txt'})
]}
🤝 Contributing
Do you have an idea for a new feature? Did you find a bug that needs fixing?
Feel free to open an issue or submit a PR!
Setup development environment
Requirements: hatch, pre-commit
- Clone the repository
- Run
hatch shellto create and activate a virtual environment - Run
pre-commit installto install the pre-commit hooks. This will force the linting and formatting checks.
Run tests
- Linting and formatting checks:
hatch run lint:fmt - Unit tests:
hatch run test-cov-all
✍️ License
dataframes-haystack is distributed under the terms of the MIT license.
Metadata
Release files for dataframes-haystack 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dataframes_haystack-0.0.5.tar.gz | 163.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dataframes_haystack-0.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 176.4 kB
Release files / dataframes_haystack-0.0.5.tar.gz
| Download URL | dataframes_haystack-0.0.5.tar.gz |
|---|---|
| Size | 163.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
960299cd4d247a7deda6fbb75f800178acc7c7ae5f757f01f6426e333496034d
|
|
BLAKE2b-256 checksum How to use checksums |
fe4ea80b75b5771b826433a3a62e2c0c44a9e54d5ed3ea3fc42c56b50fcf213b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 11, 2025.
Transparency logRelease files / dataframes_haystack-0.0.5-py3-none-any.whl
| Download URL | dataframes_haystack-0.0.5-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff8e1e62f2e8a52aa273a43d48186f5b26660650aa35d8247b27225c22a78ee9
|
|
BLAKE2b-256 checksum How to use checksums |
2defcf75a24d226bdfe79b8172bea67963355453713041a48cbd132eb54ce1a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 11, 2025.
Transparency log