Skip to content

Commit 0f98ad8

Browse files
committed
BUG: fix issues resulting from unclean merge in PR #807
1 parent 4175bf4 commit 0f98ad8

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

pandas/core/frame.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ def from_records(cls, data, index=None, exclude=None, columns=None,
659659
if isinstance(data, (np.ndarray, DataFrame, dict)):
660660
columns, sdict = _rec_to_dict(data)
661661
else:
662-
sdict, columns = _list_to_sdict(data, columns)
662+
sdict, columns = _to_sdict(data, columns)
663663

664664
if exclude is None:
665665
exclude = set()
@@ -1697,12 +1697,12 @@ def align(self, other, join='outer', axis=None, level=None, copy=True,
16971697
"""
16981698
if isinstance(other, DataFrame):
16991699
return self._align_frame(other, join=join, axis=axis, level=level,
1700-
copy=copy,
1700+
copy=copy,
17011701
fill_value=fill_value,
17021702
fill_method=fill_method)
17031703
elif isinstance(other, Series):
17041704
return self._align_series(other, join=join, axis=axis, level=level,
1705-
copy=copy,
1705+
copy=copy,
17061706
fill_value=fill_value,
17071707
fill_method=fill_method)
17081708
else: # pragma: no cover
@@ -4092,6 +4092,8 @@ def _rec_to_dict(arr):
40924092

40934093

40944094
def _to_sdict(data, columns):
4095+
if len(data) == 0:
4096+
return {}, columns
40954097
if isinstance(data[0], (list, tuple)):
40964098
return _list_to_sdict(data, columns)
40974099
elif isinstance(data[0], dict):
@@ -4101,6 +4103,18 @@ def _to_sdict(data, columns):
41014103
else: # pragma: no cover
41024104
raise TypeError('No logic to handle %s type' % type(data[0]))
41034105

4106+
def _list_to_sdict(data, columns):
4107+
if len(data) > 0 and isinstance(data[0], tuple):
4108+
content = list(lib.to_object_array_tuples(data).T)
4109+
elif len(data) > 0:
4110+
# list of lists
4111+
content = list(lib.to_object_array(data).T)
4112+
else:
4113+
if columns is None:
4114+
columns = []
4115+
return {}, columns
4116+
return _convert_object_array(content, columns)
4117+
41044118
def _list_of_series_to_sdict(data, columns):
41054119
from pandas.core.index import _get_combined_index
41064120

pandas/tests/test_series.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -1785,10 +1785,10 @@ def test_apply(self):
17851785
def test_align(self):
17861786
def _check_align(a, b, how='left', fill=None):
17871787
aa, ab = a.align(b, join=how, fill_value=fill)
1788-
1788+
17891789
join_index = a.index.join(b.index, how=how)
17901790
if fill is not None:
1791-
diff_a = aa.index.diff(join_index)
1791+
diff_a = aa.index.diff(join_index)
17921792
diff_b = ab.index.diff(join_index)
17931793
if len(diff_a) > 0:
17941794
self.assert_((aa.reindex(diff_a) == fill).all())
@@ -1798,12 +1798,16 @@ def _check_align(a, b, how='left', fill=None):
17981798
ea = a.reindex(join_index)
17991799
eb = b.reindex(join_index)
18001800

1801+
if fill is not None:
1802+
ea = ea.fillna(fill)
1803+
eb = eb.fillna(fill)
1804+
18011805
assert_series_equal(aa, ea)
18021806
assert_series_equal(ab, eb)
18031807

18041808
for kind in JOIN_TYPES:
18051809
_check_align(self.ts[2:], self.ts[:-5])
1806-
_check_align(self.ts[2:], self.ts[:-5], -1)
1810+
_check_align(self.ts[2:], self.ts[:-5], fill=-1)
18071811

18081812
# empty left
18091813
_check_align(self.ts[:0], self.ts[:-5])

0 commit comments

Comments
 (0)