Skip to content

Commit c285290

Browse files
TST/CLN: empty DataFrames and some 'empty' Series
1 parent 21769e9 commit c285290

18 files changed

+89
-44
lines changed

pandas/tests/frame/test_arithmetic.py

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

443443
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
@@ -172,8 +172,8 @@ def test_append_list_of_series_dicts(self):
172172
def test_append_empty_dataframe(self):
173173

174174
# Empty df append empty df
175-
df1 = DataFrame([])
176-
df2 = DataFrame([])
175+
df1 = DataFrame()
176+
df2 = DataFrame()
177177
result = df1.append(df2)
178178
expected = df1.copy()
179179
assert_frame_equal(result, expected)
@@ -576,18 +576,18 @@ def test_combine_first(self, float_frame):
576576
assert_series_equal(combined['A'].reindex(g.index), g['A'])
577577

578578
# corner cases
579-
comb = float_frame.combine_first(DataFrame({}))
579+
comb = float_frame.combine_first(DataFrame())
580580
assert_frame_equal(comb, float_frame)
581581

582-
comb = DataFrame({}).combine_first(float_frame)
582+
comb = DataFrame().combine_first(float_frame)
583583
assert_frame_equal(comb, float_frame)
584584

585585
comb = float_frame.combine_first(DataFrame(index=["faz", "boo"]))
586586
assert "faz" in comb.index
587587

588588
# #2525
589589
df = DataFrame({'a': [1]}, index=[datetime(2012, 1, 1)])
590-
df2 = DataFrame({}, columns=['b'])
590+
df2 = DataFrame(columns=['b'])
591591
result = df.combine_first(df2)
592592
assert 'b' in result
593593

pandas/tests/frame/test_constructors.py

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,33 @@
3232

3333
class TestDataFrameConstructors(TestData):
3434

35-
def test_constructor(self):
36-
df = DataFrame()
37-
assert len(df.index) == 0
38-
39-
df = DataFrame(data={})
40-
assert len(df.index) == 0
35+
@pytest.mark.parametrize('constructor', [
36+
lambda: DataFrame(),
37+
lambda: DataFrame(None),
38+
lambda: DataFrame({}),
39+
lambda: DataFrame(()),
40+
lambda: DataFrame([]),
41+
lambda: DataFrame((x for x in [])),
42+
lambda: DataFrame(data=None),
43+
lambda: DataFrame(data={}),
44+
lambda: DataFrame(data=()),
45+
lambda: DataFrame(data=[]),
46+
lambda: DataFrame(data=(x for x in [])),
47+
# these are NOT empty DataFrames
48+
pytest.param(lambda: DataFrame([[]]), marks=pytest.mark.xfail(
49+
reason='creates a non-zero length RangeIndex')),
50+
pytest.param(lambda: DataFrame([[], []]), marks=pytest.mark.xfail(
51+
reason='creates a non-zero length RangeIndex')),
52+
pytest.param(lambda: DataFrame([(x for x in [])]),
53+
marks=pytest.mark.xfail(
54+
reason='creates a non-zero length RangeIndex'))
55+
])
56+
def test_empty_constructor(self, constructor):
57+
expected = DataFrame()
58+
result = constructor()
59+
assert len(result.index) == 0
60+
assert len(result.columns) == 0
61+
tm.assert_frame_equal(result, expected)
4162

4263
def test_constructor_mixed(self):
4364
index, data = tm.getMixedTypeDict()
@@ -95,7 +116,7 @@ def test_constructor_dtype_list_data(self):
95116

96117
def test_constructor_list_frames(self):
97118
# see gh-3243
98-
result = DataFrame([DataFrame([])])
119+
result = DataFrame([DataFrame()])
99120
assert result.shape == (1, 0)
100121

101122
result = DataFrame([DataFrame(dict(A=lrange(5)))])
@@ -265,7 +286,7 @@ def test_constructor_dict(self):
265286
frame = DataFrame({}, index=idx)
266287
assert frame.index is idx
267288

268-
# empty with index and columns
289+
# empty dict with index and columns
269290
idx = Index([0, 1, 2])
270291
frame = DataFrame({}, index=idx, columns=idx)
271292
assert frame.index is idx
@@ -1122,7 +1143,7 @@ def test_constructor_list_of_series(self):
11221143
result2 = DataFrame(data, index=np.arange(6))
11231144
tm.assert_frame_equal(result, result2)
11241145

1125-
result = DataFrame([Series({})])
1146+
result = DataFrame([Series()])
11261147
expected = DataFrame(index=[0])
11271148
tm.assert_frame_equal(result, expected)
11281149

pandas/tests/frame/test_reshape.py

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

5858
def test_pivot_empty(self):
59-
df = DataFrame({}, columns=['a', 'b', 'c'])
59+
df = DataFrame(columns=['a', 'b', 'c'])
6060
result = df.pivot('a', 'b', 'c')
6161
expected = DataFrame()
6262
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
@@ -298,7 +298,7 @@ def f1(x):
298298
if y.empty:
299299
multiindex = MultiIndex(levels=[[]] * 2, codes=[[]] * 2,
300300
names=['b', 'c'])
301-
res = DataFrame(None, columns=['a'], index=multiindex)
301+
res = DataFrame(columns=['a'], index=multiindex)
302302
return res
303303
else:
304304
y = y.set_index(['b', 'c'])
@@ -317,7 +317,7 @@ def f3(x):
317317
if y.empty:
318318
multiindex = MultiIndex(levels=[[]] * 2, codes=[[]] * 2,
319319
names=['foo', 'bar'])
320-
res = DataFrame(None, columns=['a', 'b'], index=multiindex)
320+
res = DataFrame(columns=['a', 'b'], index=multiindex)
321321
return res
322322
else:
323323
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)