Skip to content

Commit ac318d2

Browse files
simonjayhawkinsjreback
authored andcommitted
TST/CLN: empty DataFrames and some 'empty' Series (#25690)
1 parent 2beb1b4 commit ac318d2

18 files changed

+93
-45
lines changed

pandas/tests/frame/test_arithmetic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ def test_arith_flex_zero_len_raises(self):
435435
# GH 19522 passing fill_value to frame flex arith methods should
436436
# raise even in the zero-length special cases
437437
ser_len0 = pd.Series([])
438-
df_len0 = pd.DataFrame([], columns=['A', 'B'])
438+
df_len0 = pd.DataFrame(columns=['A', 'B'])
439439
df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
440440

441441
with pytest.raises(NotImplementedError, match='fill_value'):

pandas/tests/frame/test_combine_concat.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ def test_append_list_of_series_dicts(self):
170170
def test_append_empty_dataframe(self):
171171

172172
# Empty df append empty df
173-
df1 = DataFrame([])
174-
df2 = DataFrame([])
173+
df1 = DataFrame()
174+
df2 = DataFrame()
175175
result = df1.append(df2)
176176
expected = df1.copy()
177177
assert_frame_equal(result, expected)
@@ -581,18 +581,18 @@ def test_combine_first(self, float_frame):
581581
assert_series_equal(combined['A'].reindex(g.index), g['A'])
582582

583583
# corner cases
584-
comb = float_frame.combine_first(DataFrame({}))
584+
comb = float_frame.combine_first(DataFrame())
585585
assert_frame_equal(comb, float_frame)
586586

587-
comb = DataFrame({}).combine_first(float_frame)
587+
comb = DataFrame().combine_first(float_frame)
588588
assert_frame_equal(comb, float_frame)
589589

590590
comb = float_frame.combine_first(DataFrame(index=["faz", "boo"]))
591591
assert "faz" in comb.index
592592

593593
# #2525
594594
df = DataFrame({'a': [1]}, index=[datetime(2012, 1, 1)])
595-
df2 = DataFrame({}, columns=['b'])
595+
df2 = DataFrame(columns=['b'])
596596
result = df.combine_first(df2)
597597
assert 'b' in result
598598

pandas/tests/frame/test_constructors.py

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
import pandas as pd
1818
from pandas import (
19-
Categorical, DataFrame, Index, MultiIndex, Series, Timedelta, Timestamp,
20-
compat, date_range, isna)
19+
Categorical, DataFrame, Index, MultiIndex, RangeIndex, Series, Timedelta,
20+
Timestamp, compat, date_range, isna)
2121
from pandas.tests.frame.common import TestData
2222
import pandas.util.testing as tm
2323

@@ -28,12 +28,36 @@
2828

2929
class TestDataFrameConstructors(TestData):
3030

31-
def test_constructor(self):
32-
df = DataFrame()
33-
assert len(df.index) == 0
31+
@pytest.mark.parametrize('constructor', [
32+
lambda: DataFrame(),
33+
lambda: DataFrame(None),
34+
lambda: DataFrame({}),
35+
lambda: DataFrame(()),
36+
lambda: DataFrame([]),
37+
lambda: DataFrame((x for x in [])),
38+
lambda: DataFrame(data=None),
39+
lambda: DataFrame(data={}),
40+
lambda: DataFrame(data=()),
41+
lambda: DataFrame(data=[]),
42+
lambda: DataFrame(data=(x for x in []))
43+
])
44+
def test_empty_constructor(self, constructor):
45+
expected = DataFrame()
46+
result = constructor()
47+
assert len(result.index) == 0
48+
assert len(result.columns) == 0
49+
tm.assert_frame_equal(result, expected)
3450

35-
df = DataFrame(data={})
36-
assert len(df.index) == 0
51+
@pytest.mark.parametrize('emptylike,expected_index,expected_columns', [
52+
([[]], RangeIndex(1), RangeIndex(0)),
53+
([[], []], RangeIndex(2), RangeIndex(0)),
54+
([(x for x in [])], RangeIndex(1), RangeIndex(0))
55+
])
56+
def test_emptylike_constructor(
57+
self, emptylike, expected_index, expected_columns):
58+
expected = DataFrame(index=expected_index, columns=expected_columns)
59+
result = DataFrame(emptylike)
60+
tm.assert_frame_equal(result, expected)
3761

3862
def test_constructor_mixed(self):
3963
index, data = tm.getMixedTypeDict()
@@ -91,7 +115,7 @@ def test_constructor_dtype_list_data(self):
91115

92116
def test_constructor_list_frames(self):
93117
# see gh-3243
94-
result = DataFrame([DataFrame([])])
118+
result = DataFrame([DataFrame()])
95119
assert result.shape == (1, 0)
96120

97121
result = DataFrame([DataFrame(dict(A=lrange(5)))])
@@ -258,7 +282,7 @@ def test_constructor_dict(self):
258282
frame = DataFrame({}, index=idx)
259283
assert frame.index is idx
260284

261-
# empty with index and columns
285+
# empty dict with index and columns
262286
idx = Index([0, 1, 2])
263287
frame = DataFrame({}, index=idx, columns=idx)
264288
assert frame.index is idx
@@ -1105,7 +1129,7 @@ def test_constructor_list_of_series(self):
11051129
result2 = DataFrame(data, index=np.arange(6))
11061130
tm.assert_frame_equal(result, result2)
11071131

1108-
result = DataFrame([Series({})])
1132+
result = DataFrame([Series()])
11091133
expected = DataFrame(index=[0])
11101134
tm.assert_frame_equal(result, expected)
11111135

pandas/tests/frame/test_reshape.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_pivot_duplicates(self):
5252
data.pivot('a', 'b', 'c')
5353

5454
def test_pivot_empty(self):
55-
df = DataFrame({}, columns=['a', 'b', 'c'])
55+
df = DataFrame(columns=['a', 'b', 'c'])
5656
result = df.pivot('a', 'b', 'c')
5757
expected = DataFrame()
5858
tm.assert_frame_equal(result, expected, check_names=False)

pandas/tests/groupby/test_function.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,8 +1064,8 @@ def test_size(df):
10641064
tm.assert_series_equal(left, right, check_names=False)
10651065

10661066
# GH11699
1067-
df = DataFrame([], columns=['A', 'B'])
1068-
out = Series([], dtype='int64', index=Index([], name='A'))
1067+
df = DataFrame(columns=['A', 'B'])
1068+
out = Series(dtype='int64', index=Index([], name='A'))
10691069
tm.assert_series_equal(df.groupby('A').size(), out)
10701070

10711071

pandas/tests/groupby/test_groupby.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def f1(x):
296296
if y.empty:
297297
multiindex = MultiIndex(levels=[[]] * 2, codes=[[]] * 2,
298298
names=['b', 'c'])
299-
res = DataFrame(None, columns=['a'], index=multiindex)
299+
res = DataFrame(columns=['a'], index=multiindex)
300300
return res
301301
else:
302302
y = y.set_index(['b', 'c'])
@@ -315,7 +315,7 @@ def f3(x):
315315
if y.empty:
316316
multiindex = MultiIndex(levels=[[]] * 2, codes=[[]] * 2,
317317
names=['foo', 'bar'])
318-
res = DataFrame(None, columns=['a', 'b'], index=multiindex)
318+
res = DataFrame(columns=['a', 'b'], index=multiindex)
319319
return res
320320
else:
321321
return y

pandas/tests/groupby/test_grouping.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ def test_groupby_with_single_column(self):
643643
df = pd.DataFrame({'a': list('abssbab')})
644644
tm.assert_frame_equal(df.groupby('a').get_group('a'), df.iloc[[0, 5]])
645645
# GH 13530
646-
exp = pd.DataFrame([], index=pd.Index(['a', 'b', 's'], name='a'))
646+
exp = pd.DataFrame(index=pd.Index(['a', 'b', 's'], name='a'))
647647
tm.assert_frame_equal(df.groupby('a').count(), exp)
648648
tm.assert_frame_equal(df.groupby('a').sum(), exp)
649649
tm.assert_frame_equal(df.groupby('a').nth(1), exp)

pandas/tests/indexing/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ def setup_method(self, method):
8585
self.frame_ts_rev = DataFrame(np.random.randn(4, 4),
8686
index=dates_rev)
8787

88-
self.frame_empty = DataFrame({})
89-
self.series_empty = Series({})
88+
self.frame_empty = DataFrame()
89+
self.series_empty = Series()
9090

9191
# form agglomerates
9292
for o in self._objs:

pandas/tests/io/json/test_json_table_schema.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ def test_set_names_unset(self, idx, nm, prop):
459459
])
460460
def test_warns_non_roundtrippable_names(self, idx):
461461
# GH 19130
462-
df = pd.DataFrame([[]], index=idx)
462+
df = pd.DataFrame(index=idx)
463463
df.index.name = 'index'
464464
with tm.assert_produces_warning():
465465
set_default_names(df)
@@ -566,7 +566,7 @@ def test_multiindex(self, index_names):
566566

567567
def test_empty_frame_roundtrip(self):
568568
# GH 21287
569-
df = pd.DataFrame([], columns=['a', 'b', 'c'])
569+
df = pd.DataFrame(columns=['a', 'b', 'c'])
570570
expected = df.copy()
571571
out = df.to_json(orient='table')
572572
result = pd.read_json(out, orient='table')

pandas/tests/io/json/test_pandas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def setup(self, datapath):
5454
self.objSeries.name = 'objects'
5555

5656
self.empty_series = Series([], index=[])
57-
self.empty_frame = DataFrame({})
57+
self.empty_frame = DataFrame()
5858

5959
self.frame = _frame.copy()
6060
self.frame2 = _frame2.copy()

0 commit comments

Comments
 (0)