Skip to content

Commit d71995a

Browse files
committed
Add test case for creation from records
1 parent dd4b327 commit d71995a

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

pandas/tests/frame/test_constructors.py

+44
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from collections.abc import (
99
Iterator,
1010
Mapping,
11+
Sequence,
1112
)
1213
from dataclasses import make_dataclass
1314
from datetime import (
@@ -94,6 +95,19 @@ def __len__(self):
9495
return self._dict.__len__()
9596

9697

98+
class ListWrapper(Sequence):
99+
_list: list
100+
101+
def __init__(self, lst: list) -> None:
102+
self._list = lst
103+
104+
def __getitem__(self, i):
105+
return self._list[i]
106+
107+
def __len__(self):
108+
return self._list.__len__()
109+
110+
97111
class TestDataFrameConstructors:
98112
def test_constructor_from_ndarray_with_str_dtype(self):
99113
# If we don't ravel/reshape around ensure_str_array, we end up
@@ -2931,6 +2945,36 @@ def test_from_dict_with_mapping(self):
29312945
tm.assert_series_equal(df["A"], Series(idx, name="A"))
29322946
tm.assert_series_equal(df["B"], Series(dr, name="B"))
29332947

2948+
def test_from_mappiog_list(self):
2949+
idx = Index(date_range("20130101", periods=3, tz="US/Eastern"), name="foo")
2950+
dr = date_range("20130110", periods=3)
2951+
data = DataFrame({"A": idx, "B": dr})
2952+
mapping_list = [
2953+
DictWrapper(record) for record in data.to_dict(orient="records")
2954+
]
2955+
2956+
# construction
2957+
df = DataFrame(mapping_list)
2958+
assert df["A"].dtype, "M8[ns, US/Eastern"
2959+
assert df["A"].name == "A"
2960+
tm.assert_series_equal(df["A"], Series(idx, name="A"))
2961+
tm.assert_series_equal(df["B"], Series(dr, name="B"))
2962+
2963+
def test_from_mappiog_sequence(self):
2964+
idx = Index(date_range("20130101", periods=3, tz="US/Eastern"), name="foo")
2965+
dr = date_range("20130110", periods=3)
2966+
data = DataFrame({"A": idx, "B": dr})
2967+
mapping_list = ListWrapper(
2968+
[DictWrapper(record) for record in data.to_dict(orient="records")]
2969+
)
2970+
2971+
# construction
2972+
df = DataFrame(mapping_list)
2973+
assert df["A"].dtype, "M8[ns, US/Eastern"
2974+
assert df["A"].name == "A"
2975+
tm.assert_series_equal(df["A"], Series(idx, name="A"))
2976+
tm.assert_series_equal(df["B"], Series(dr, name="B"))
2977+
29342978
def test_from_index(self):
29352979
# from index
29362980
idx2 = date_range("20130101", periods=3, tz="US/Eastern", name="foo")

0 commit comments

Comments
 (0)