Skip to content

Commit f7b9f05

Browse files
committed
stahsing
1 parent 0a12cc3 commit f7b9f05

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

pandas/core/frame.py

+50
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,56 @@ def to_html(self, buf=None, columns=None, col_space=None, colSpace=None,
13931393
if buf is None:
13941394
return formatter.buf.getvalue()
13951395

1396+
def style(self, rows=None, columns=None, frame=None):
1397+
row_styles, col_styles, frame_styles = self._build_styles(
1398+
rows=rows, columns=columns, frame=frame
1399+
)
1400+
return self.to_html(styles)
1401+
1402+
def _format_sytle_args(self, rows=None, columns=None, frame=None):
1403+
rows = {row: [x] if not com.is_list_like(x) else x
1404+
for row, x in rows.items()}
1405+
columns = {col: [x] if not com.is_list_like(x) else x
1406+
for col, x in columns.items()}
1407+
frame = [x] if not com.is_list_like(x) else x
1408+
return rows, columns, frame
1409+
1410+
1411+
def _build_styles(self, rows=None, columns=None, frame=None):
1412+
final = [] # (row, col, prop, value)
1413+
1414+
rows, columns, frame = self._format_sytle_args(rows, columns, frame)
1415+
1416+
if rows is not None:
1417+
for row in rows:
1418+
for func in rows[row]:
1419+
props, values = zip(*func(self.loc[row]))
1420+
final.append(pd.DataFrame({'row': row, 'col': self.columns,
1421+
'prop': props, 'value': values}))
1422+
if columns is not None:
1423+
for col in columns:
1424+
for func in columns[col]:
1425+
props, values = zip(*func(self[col]))
1426+
final.append(pd.DataFrame({'row': self.index, 'col': col,
1427+
'prop': props, 'value': values}))
1428+
1429+
if frame is not None:
1430+
for func in frame:
1431+
r = func(self)
1432+
for col in r:
1433+
try:
1434+
prop, values = zip(*r[col])
1435+
except ValueError:
1436+
prop, values = '', ''
1437+
final.append(pd.DataFrame({'row': r.index, 'col': col,
1438+
'prop': props, 'value': values}))
1439+
1440+
r = pd.concat(final)[['row', 'col', 'prop', 'value']]
1441+
r = (r['prop'] + ':' + r['value']).groupby([r['row'], r['col']]).agg(
1442+
lambda x: '; '.join(x))
1443+
1444+
return r.unstack()
1445+
13961446
@Appender(fmt.docstring_to_string, indents=1)
13971447
def to_latex(self, buf=None, columns=None, col_space=None, colSpace=None,
13981448
header=True, index=True, na_rep='NaN', formatters=None,

0 commit comments

Comments
 (0)