Skip to content

Commit 6d8980e

Browse files
committed
Add test case for creation from records
1 parent 2a94a01 commit 6d8980e

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

pandas/tests/frame/test_constructors.py

Lines changed: 44 additions & 0 deletions
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
@@ -2947,6 +2961,36 @@ def test_from_dict_with_mapping(self):
29472961
tm.assert_series_equal(df["A"], Series(idx, name="A"))
29482962
tm.assert_series_equal(df["B"], Series(dr, name="B"))
29492963

2964+
def test_from_mappiog_list(self):
2965+
idx = Index(date_range("20130101", periods=3, tz="US/Eastern"), name="foo")
2966+
dr = date_range("20130110", periods=3)
2967+
data = DataFrame({"A": idx, "B": dr})
2968+
mapping_list = [
2969+
DictWrapper(record) for record in data.to_dict(orient="records")
2970+
]
2971+
2972+
# construction
2973+
df = DataFrame(mapping_list)
2974+
assert df["A"].dtype, "M8[ns, US/Eastern"
2975+
assert df["A"].name == "A"
2976+
tm.assert_series_equal(df["A"], Series(idx, name="A"))
2977+
tm.assert_series_equal(df["B"], Series(dr, name="B"))
2978+
2979+
def test_from_mappiog_sequence(self):
2980+
idx = Index(date_range("20130101", periods=3, tz="US/Eastern"), name="foo")
2981+
dr = date_range("20130110", periods=3)
2982+
data = DataFrame({"A": idx, "B": dr})
2983+
mapping_list = ListWrapper(
2984+
[DictWrapper(record) for record in data.to_dict(orient="records")]
2985+
)
2986+
2987+
# construction
2988+
df = DataFrame(mapping_list)
2989+
assert df["A"].dtype, "M8[ns, US/Eastern"
2990+
assert df["A"].name == "A"
2991+
tm.assert_series_equal(df["A"], Series(idx, name="A"))
2992+
tm.assert_series_equal(df["B"], Series(dr, name="B"))
2993+
29502994
def test_from_index(self):
29512995
# from index
29522996
idx2 = date_range("20130101", periods=3, tz="US/Eastern", name="foo")

0 commit comments

Comments
 (0)