Skip to content

Commit 3878bd2

Browse files
committed
BUG: Render empty DataFrame as empty HTML table w/o raising IndexError.
1 parent 6614e26 commit 3878bd2

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

pandas/io/formats/style.py

+19-18
Original file line numberDiff line numberDiff line change
@@ -238,24 +238,25 @@ def format_attr(pair):
238238
"class": " ".join(cs),
239239
"is_visible": True})
240240

241-
for c, value in enumerate(clabels[r]):
242-
cs = [COL_HEADING_CLASS, "level%s" % r, "col%s" % c]
243-
cs.extend(cell_context.get(
244-
"col_headings", {}).get(r, {}).get(c, []))
245-
es = {
246-
"type": "th",
247-
"value": value,
248-
"display_value": value,
249-
"class": " ".join(cs),
250-
"is_visible": _is_visible(c, r, col_lengths),
251-
}
252-
colspan = col_lengths.get((r, c), 0)
253-
if colspan > 1:
254-
es["attributes"] = [
255-
format_attr({"key": "colspan", "value": colspan})
256-
]
257-
row_es.append(es)
258-
head.append(row_es)
241+
if clabels:
242+
for c, value in enumerate(clabels[r]):
243+
cs = [COL_HEADING_CLASS, "level%s" % r, "col%s" % c]
244+
cs.extend(cell_context.get(
245+
"col_headings", {}).get(r, {}).get(c, []))
246+
es = {
247+
"type": "th",
248+
"value": value,
249+
"display_value": value,
250+
"class": " ".join(cs),
251+
"is_visible": _is_visible(c, r, col_lengths),
252+
}
253+
colspan = col_lengths.get((r, c), 0)
254+
if colspan > 1:
255+
es["attributes"] = [
256+
format_attr({"key": "colspan", "value": colspan})
257+
]
258+
row_es.append(es)
259+
head.append(row_es)
259260

260261
if self.data.index.names and not all(x is None
261262
for x in self.data.index.names):

pandas/tests/io/formats/test_style.py

+6
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ def test_render(self):
103103
s.render()
104104
# it worked?
105105

106+
def test_render_empty_df(self):
107+
empty_df = DataFrame()
108+
es = Styler(empty_df)
109+
es.render()
110+
# It didn't raise IndexError?
111+
106112
def test_render_double(self):
107113
df = pd.DataFrame({"A": [0, 1]})
108114
style = lambda x: pd.Series(["color: red; border: 1px",

0 commit comments

Comments
 (0)