Skip to content

Commit ae49a4b

Browse files
authored
Merge dev into pre-commit-ci-update-config
2 parents 8a13900 + 1f06a99 commit ae49a4b

File tree

5 files changed

+73
-0
lines changed

5 files changed

+73
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- [ENH] Added support for pd.Series.select - Issue #1394 @samukweku
66
- [ENH] Added suport for janitor.mutate - Issue #1226 @samukweku
77
- [ENH] Added support for janitor.summarise - Issue #1225 @samukweku
8+
- [ENH] Added support for janitor.alias - Issue #1449 @samukweku
89

910
## [v0.30.0] - 2024-12-04
1011

janitor/functions/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
# 7. Never import utils.
1717

1818
from .add_columns import add_columns
19+
from .alias import alias
1920
from .also import also
2021
from .bin_numeric import bin_numeric
2122
from .case_when import case_when
@@ -96,6 +97,7 @@
9697

9798
__all__ = [
9899
"add_columns",
100+
"alias",
99101
"also",
100102
"bin_numeric",
101103
"cartesian_product",

janitor/functions/alias.py

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"""Implementation of the `toset` function."""
2+
3+
from __future__ import annotations
4+
5+
from typing import Any
6+
7+
import pandas as pd
8+
import pandas_flavor as pf
9+
10+
11+
@pf.register_series_method
12+
def alias(series: pd.Series, alias: Any = None) -> pd.Series:
13+
"""Return a Series with a new name. Accepts either a scalar or a callable.
14+
15+
16+
Examples:
17+
>>> import pandas as pd
18+
>>> import janitor
19+
>>> s = pd.Series([1, 2, 3], name='series')
20+
>>> s
21+
0 1
22+
1 2
23+
2 3
24+
Name: series, dtype: int64
25+
>>> s.alias('series_new')
26+
0 1
27+
1 2
28+
2 3
29+
Name: series_new, dtype: int64
30+
>>> s.alias(str.upper)
31+
0 1
32+
1 2
33+
2 3
34+
Name: SERIES, dtype: int64
35+
36+
Args:
37+
series: A pandas Series.
38+
alias: scalar or callable to create a new name for the pandas Series.
39+
40+
Returns:
41+
A new pandas Series.
42+
"""
43+
series = series[:]
44+
if alias is None:
45+
return series
46+
if callable(alias):
47+
alias = alias(series.name)
48+
series.name = alias
49+
return series

mkdocs/api/functions.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- "!^_"
77
members:
88
- add_columns
9+
- alias
910
- also
1011
- bin_numeric
1112
- case_when

tests/functions/test_alias.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import pandas as pd
2+
from pandas.testing import assert_series_equal
3+
4+
5+
def test_alias_no_name():
6+
"""Test output if Series does not have a name"""
7+
series = pd.Series([1, 2, 3])
8+
assert_series_equal(series, series.alias())
9+
10+
11+
def test_alias_callable():
12+
"""Test output if alias is a callable"""
13+
series = pd.Series([1, 2, 3], name="UPPER")
14+
assert_series_equal(series.rename("upper"), series.alias(str.lower))
15+
16+
17+
def test_alias_scalar():
18+
"""Test output if alias is a scalar"""
19+
series = pd.Series([1, 2, 3], name="UPPER")
20+
assert_series_equal(series.rename("upper"), series.alias("upper"))

0 commit comments

Comments
 (0)