Skip to content

Commit dd4b327

Browse files
committed
Add test
1 parent f17f0af commit dd4b327

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

pandas/tests/frame/test_constructors.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
defaultdict,
66
namedtuple,
77
)
8-
from collections.abc import Iterator
8+
from collections.abc import (
9+
Iterator,
10+
Mapping,
11+
)
912
from dataclasses import make_dataclass
1013
from datetime import (
1114
date,
@@ -75,6 +78,22 @@
7578
]
7679

7780

81+
class DictWrapper(Mapping):
82+
_dict: dict
83+
84+
def __init__(self, d: dict) -> None:
85+
self._dict = d
86+
87+
def __getitem__(self, key):
88+
return self._dict[key]
89+
90+
def __iter__(self):
91+
return self._dict.__iter__()
92+
93+
def __len__(self):
94+
return self._dict.__len__()
95+
96+
7897
class TestDataFrameConstructors:
7998
def test_constructor_from_ndarray_with_str_dtype(self):
8099
# If we don't ravel/reshape around ensure_str_array, we end up
@@ -2901,6 +2920,17 @@ def test_from_dict(self):
29012920
tm.assert_series_equal(df["A"], Series(idx, name="A"))
29022921
tm.assert_series_equal(df["B"], Series(dr, name="B"))
29032922

2923+
def test_from_dict_with_mapping(self):
2924+
idx = Index(date_range("20130101", periods=3, tz="US/Eastern"), name="foo")
2925+
dr = date_range("20130110", periods=3)
2926+
2927+
# construction
2928+
df = DataFrame(DictWrapper({"A": idx, "B": dr}))
2929+
assert df["A"].dtype, "M8[ns, US/Eastern"
2930+
assert df["A"].name == "A"
2931+
tm.assert_series_equal(df["A"], Series(idx, name="A"))
2932+
tm.assert_series_equal(df["B"], Series(dr, name="B"))
2933+
29042934
def test_from_index(self):
29052935
# from index
29062936
idx2 = date_range("20130101", periods=3, tz="US/Eastern", name="foo")

0 commit comments

Comments
 (0)