https://github.com/lmmx/polars-permute-plugin
  
  
    A Polars plugin for easily reordering DataFrame columns 
    https://github.com/lmmx/polars-permute-plugin
  
polars polars-plugins reordering
        Last synced: 7 months ago 
        JSON representation
    
A Polars plugin for easily reordering DataFrame columns
- Host: GitHub
 - URL: https://github.com/lmmx/polars-permute-plugin
 - Owner: lmmx
 - License: mit
 - Created: 2025-02-06T11:44:18.000Z (9 months ago)
 - Default Branch: master
 - Last Pushed: 2025-03-24T22:04:11.000Z (7 months ago)
 - Last Synced: 2025-03-24T23:19:38.131Z (7 months ago)
 - Topics: polars, polars-plugins, reordering
 - Language: Python
 - Homepage: https://pypi.org/project/polars-permute/
 - Size: 38.1 KB
 - Stars: 2
 - Watchers: 1
 - Forks: 0
 - Open Issues: 0
 - 
            Metadata Files:
            
- Readme: README.md
 - License: LICENSE
 
 
Awesome Lists containing this project
- awesome-polars - polars-permute-plugin - Polars plugin for easily reordering DataFrame columns by [@lmmx](https://github.com/lmmx). (Libraries/Packages/Scripts / Polars plugins)
 
README
          # Polars Permute Plugin
A Polars plugin for easily reordering DataFrame columns.
Supports column permutations like prepending, appending, shifting, and swapping.
## Installation
```python
pip install polars-permute[polars]
```
On older CPUs run:
```python
pip install polars-permute[polars-lts-cpu]
```
## Features
- Supports both string column names and Polars expressions
- Handles single or multiple columns
- Maintains relative ordering of moved columns
- Chain operations together
- Gracefully handles edge cases (non-existent columns, empty inputs)
## Usage
The plugin adds a `permute` namespace to Polars DataFrames with methods for column reordering:
```python
import polars as pl
import polars_permute
# Create a sample DataFrame
df = pl.DataFrame({
    "a": [1, 2, 3],
    "b": [4, 5, 6],
    "c": [7, 8, 9],
    "d": [10, 11, 12]
})
# Move column 'd' to the start
df.permute.prepend("d")
# Move multiple columns to the end
df.permute.append(["a", "b"])
# Move columns to a specific position
df.permute.at(["b", "c"], index=0)
# Shift columns left/right
df.permute.shift("a", "b", steps=1, direction="right")
# Swap two columns
df.permute.swap("a", "d")
```
## API Reference
### prepend(cols)
Move specified column(s) to the start (index 0).
```python
df.permute.prepend("d")  # Single column
df.permute.prepend(["c", "d"])  # Multiple columns
df.permute.prepend(pl.col("a").alias("x"))  # Using expressions
```
### append(cols)
Move specified column(s) to the end.
```python
df.permute.append("a")
df.permute.append(["a", "b"])
```
### at(cols, index)
Move specified column(s) to exact position.
```python
df.permute.at("d", 1)  # Move 'd' to index 1
df.permute.at(["b", "c"], 0)  # Move multiple columns
```
### shift(cols, steps=1, direction="left")
Shift column(s) left or right by steps.
```python
df.permute.shift("c", steps=1, direction="left")
df.permute.shift("a", "b", steps=2, direction="right")
```
### swap(col1, col2)
Swap positions of two columns.
```python
df.permute.swap("a", "d")
```
## Notes
- Operations create a new DataFrame; the original is not modified
- Column order is preserved for multiple column operations
- Invalid columns are ignored gracefully
- Out-of-bounds indexes are clamped to valid range
## Contributing
Feel free to open issues or submit pull requests for improvements or bug fixes.
## License
MIT License