48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import pytest
|
|
|
|
from pandas import (
|
|
DatetimeIndex,
|
|
Index,
|
|
MultiIndex,
|
|
Period,
|
|
date_range,
|
|
)
|
|
import pandas._testing as tm
|
|
|
|
|
|
class TestMap:
|
|
def test_map(self):
|
|
rng = date_range("1/1/2000", periods=10)
|
|
|
|
f = lambda x: x.strftime("%Y%m%d")
|
|
result = rng.map(f)
|
|
exp = Index([f(x) for x in rng], dtype="<U8")
|
|
tm.assert_index_equal(result, exp)
|
|
|
|
def test_map_fallthrough(self, capsys):
|
|
# GH#22067, check we don't get warnings about silently ignored errors
|
|
dti = date_range("2017-01-01", "2018-01-01", freq="B")
|
|
|
|
dti.map(lambda x: Period(year=x.year, month=x.month, freq="M"))
|
|
|
|
captured = capsys.readouterr()
|
|
assert captured.err == ""
|
|
|
|
def test_map_bug_1677(self):
|
|
index = DatetimeIndex(["2012-04-25 09:30:00.393000"])
|
|
f = index.asof
|
|
|
|
result = index.map(f)
|
|
expected = Index([f(index[0])])
|
|
tm.assert_index_equal(result, expected)
|
|
|
|
@pytest.mark.parametrize("name", [None, "name"])
|
|
def test_index_map(self, name):
|
|
# see GH#20990
|
|
count = 6
|
|
index = date_range("2018-01-01", periods=count, freq="M", name=name).map(
|
|
lambda x: (x.year, x.month)
|
|
)
|
|
exp_index = MultiIndex.from_product(((2018,), range(1, 7)), names=[name, name])
|
|
tm.assert_index_equal(index, exp_index)
|