Observed since 20 Oct, 19:19 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
additory
Elegant data operations for DataFrames - add.to(), add.transform(), add.synthetic()
Elegant data operations for DataFrames
A Rust-powered Python library for intuitive data transformations, lookups, synthetic data generation, and DataFrame comparison — with Polars and Pandas.
pip install additory
Requirements: Python 3.9+ · Polars (required) · pyarrow (required) · Pandas (optional)
import additory as add
import polars as pl
orders = pl.DataFrame({'order_id': [1, 2], 'customer_id': [101, 102], 'amount': [250, 180]})
customers = pl.DataFrame({'customer_id': [101, 102], 'name': ['Alice', 'Bob']})
result = add.to(orders, customers, 'name', 'customer_id')
df = pl.DataFrame({'price': [100, 200, 300], 'quantity': [2, 3, 1]})
result = add.transform('@calc', df, strategy={'total': 'price * quantity', 'tax': 'total * 0.1'})
result = add.transform('@filter', df, where='price > 150')
result = add.transform('@sort', df, by='price', strategy='desc')
result = add.transform('@aggregate', df, by='category', strategy={'price': 'sum'})
result = add.synthetic('@new', n=1000, strategy={
'age': 'normal(40, 10)',
'salary': 'normal(75000, 15000)',
})
# Augment existing data
result = add.synthetic(df, n=100)
diff = add.scan('@diff', old=df_jan, new=df_feb)
patients = pl.DataFrame({'weight': [70, 85], 'height': [1.70, 1.80]})
result = add.bmi(patients)
result = (
orders
.pipe(add.to, customers, 'name', 'customer_id')
.pipe(add.to, products, 'price', 'product_id')
)
| Function | Purpose | Pipe-Friendly |
|---|---|---|
add.to(bring_to, bring_from, bring, against, ...) | Bring columns from another DataFrame | ✅ |
add.transform(mode, df, ...) | Transform data (12 modes) | ❌ |
add.synthetic(df_or_mode, n, ...) | Generate or augment data | ✅ |
add.scan(mode, df, ...) | Analyze, diff, manage expressions | ❌ |
add.<dynamic>(df, ...) | Named expression functions | ✅ |
@calc · @filter · @sort · @aggregate · @harmonize · @round · @transpose · @extract · @onehot · @label · @deduce · @split
add.scan('@diff').add fileslineage=Truedf.pipe()📚 sekarkrishna.github.io/additory
Current version: 0.1.3a11
MIT License — see LICENSE for details.
Author: Krishnamoorthy Sankaran
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
polarsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | polars>=0.19.0 | runtime |
pyarrowEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pyarrow>=10.0.0 | runtime |
pandasEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pandas>=1.5.0; extra == "all" | runtime |
pyarrowEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pyarrow>=10.0.0; extra == "all" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0; extra == "dev" | runtime |
pandasEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pandas>=1.5.0; extra == "dev" | runtime |
pyarrowEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pyarrow>=10.0.0; extra == "dev" | runtime |
pandasEnvironment{
"extras": "",
"marker": "extra == \"pandas\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pandas>=1.5.0; extra == "pandas" | runtime |
pyarrowEnvironment{
"extras": "",
"marker": "extra == \"pandas\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pyarrow>=10.0.0; extra == "pandas" | runtime |
bdist_wheel · 10,429.44 KB · Python cp310
bdist_wheel · 11,693.21 KB · Python cp310
bdist_wheel · 11,630.07 KB · Python cp310
bdist_wheel · 10,429.26 KB · Python cp311
bdist_wheel · 11,693.09 KB · Python cp311
bdist_wheel · 11,630.4 KB · Python cp311
bdist_wheel · 10,429.21 KB · Python cp312
bdist_wheel · 11,693.97 KB · Python cp312
bdist_wheel · 11,633.44 KB · Python cp312
bdist_wheel · 10,429.21 KB · Python cp313
bdist_wheel · 11,693.97 KB · Python cp313
bdist_wheel · 11,633.43 KB · Python cp313
bdist_wheel · 10,429.05 KB · Python cp39
bdist_wheel · 11,695.04 KB · Python cp39
bdist_wheel · 11,633.73 KB · Python cp39
sdist · 1,239.16 KB · Python source
Observed since 20 Oct, 19:19 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:79288c4370872d2ec77d58bbee74cbe5833ebfdc3ac9cded95f94e0f8aa86a5e