![](/img/trans.png)
[英]Change the color of text within a pandas dataframe html table python using styles and css
[英]pandas DataFrame to html with inline styles instead of CSS
我正在尝试将HTML格式的pandas DataFrame作为电子邮件的一部分发送。 我正在尝试使用类似
import pandas as pd
df = pd.DataFrame({1: [1, 2, 3], 2: [4, 5, 6]})
def style_map(x):
return 'color: red' if x == 1 else 'color: blue'
styled_df = df.style.applymap(style_map).render()
然后将styled_df
添加到其余的HTML中。 但是,此方法使用CSS设置表格样式,其输出如下所示:
<style type="text/css" >
#T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row0_col0 {
color: red;
} #T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row0_col1 {
color: blue;
} #T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row1_col0 {
color: blue;
} #T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row1_col1 {
color: blue;
} #T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row2_col0 {
color: blue;
} #T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row2_col1 {
color: blue;
}</style><table id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4" ><thead> <tr> <th class="blank level0" ></th> <th class="col_heading level0 col0" >1</th> <th class="col_heading level0 col1" >2</th> </tr></thead><tbody>
<tr>
<th id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4level0_row0" class="row_heading level0 row0" >0</th>
<td id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row0_col0" class="data row0 col0" >1</td>
<td id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row0_col1" class="data row0 col1" >4</td>
</tr>
<tr>
<th id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4level0_row1" class="row_heading level0 row1" >1</th>
<td id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row1_col0" class="data row1 col0" >2</td>
<td id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row1_col1" class="data row1 col1" >5</td>
</tr>
<tr>
<th id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4level0_row2" class="row_heading level0 row2" >2</th>
<td id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row2_col0" class="data row2 col0" >3</td>
<td id="T_3627a1a0_4fb7_11e9_9bf9_33657f3526e4row2_col1" class="data row2 col1" >6</td>
</tr>
</tbody></table>
在这种情况下,大多数电子邮件客户端将忽略样式。
我的问题是:是否有一种(简单的方法)将样式信息移入单个单元格的style=
属性?
一种方法是将Pandas自己的样式与Python模块结合使用,以将CSS转换为嵌入式样式(例如,参见本SO post )。
例如,使用premailer :
In [1]: from premailer import transform
In [2]: import pandas as pd
...:
...: df = pd.DataFrame({1: [1, 2, 3], 2: [4, 5, 6]})
...:
...: def style_map(x):
...: return 'color: red' if x == 1 else 'color: blue'
...:
...: styled_df = df.style.applymap(style_map).render()
In [4]: print(transform(styled_df))
<html><head></head><body><table id="T_47851dee_4fbf_11e9_9c6a_f5d370129713"><thead> <tr> <th class="blank level0"></th> <th class="col_heading level0 col0">1</th> <th class="col_heading level0 col1">2</th> </tr></thead><tbody>
<tr>
<th id="T_47851dee_4fbf_11e9_9c6a_f5d370129713level0_row0" class="row_heading level0 row0">0</th>
<td id="T_47851dee_4fbf_11e9_9c6a_f5d370129713row0_col0" class="data row0 col0" style="color:red">1</td>
<td id="T_47851dee_4fbf_11e9_9c6a_f5d370129713row0_col1" class="data row0 col1" style="color:blue">4</td>
</tr>
<tr>
<th id="T_47851dee_4fbf_11e9_9c6a_f5d370129713level0_row1" class="row_heading level0 row1">1</th>
<td id="T_47851dee_4fbf_11e9_9c6a_f5d370129713row1_col0" class="data row1 col0" style="color:blue">2</td>
<td id="T_47851dee_4fbf_11e9_9c6a_f5d370129713row1_col1" class="data row1 col1" style="color:blue">5</td>
</tr>
<tr>
<th id="T_47851dee_4fbf_11e9_9c6a_f5d370129713level0_row2" class="row_heading level0 row2">2</th>
<td id="T_47851dee_4fbf_11e9_9c6a_f5d370129713row2_col0" class="data row2 col0" style="color:blue">3</td>
<td id="T_47851dee_4fbf_11e9_9c6a_f5d370129713row2_col1" class="data row2 col1" style="color:blue">6</td>
</tr>
</tbody></table></body></html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.