You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将含浮点值的Yes/No结果转换为指定表格格式

解决方案

1. 修正比例计算的错误

你代码里的value_counts(['yes'])是错误用法,value_counts的normalize参数需要传入布尔值True来返回比例,而非传入值列表。修正后的单个部门比例计算代码如下:

# 计算sales部门流失率比例并保留两位小数
sales_attr = emp_data[emp_data['dept'] == 'sales']['attrition'].value_counts(normalize=True) * 100
sales_attr = sales_attr.round(2)

2. 构造目标表格结构

将得到的Series结果转换为符合你需求的表格格式,这里提供两种方式:

方式一:单个部门生成指定HTML表格

import pandas as pd

# 构造对应DataFrame
sales_df = pd.DataFrame({
    '部门': ['sales'],
    'Yes': [sales_attr.get('yes', 0.0)],  # 若'yes'不存在则返回0.0
    'No': [sales_attr.get('no', 0.0)]      # 若'no'不存在则返回0.0
})

# 生成你需要的HTML表格
target_html = """
<h2>表格名称:按部门划分的流失率</h2>
<div class="s-table-container">
<table class="s-table">
<thead>
<tr>
<th style="text-align: left;">部门</th>
<th style="text-align: left;">Yes</th>
<th style="text-align: left;">No</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">{}</td>
<td style="text-align: left;">{}</td>
<td style="text-align: left;">{}</td>
</tr>
</tbody>
</table>
</div>
""".format(sales_df.iloc[0]['部门'], sales_df.iloc[0]['Yes'], sales_df.iloc[0]['No'])

print(target_html)

运行后会输出你想要的HTML表格代码,渲染后效果如下:

表格名称:按部门划分的流失率

部门YesNo
sales24.4975.51

方式二:批量处理所有部门

如果需要一次性统计所有部门的流失率并生成表格,可使用groupby批量处理:

# 按部门分组计算流失率比例
all_dept_attr = emp_data.groupby('dept')['attrition'].value_counts(normalize=True).unstack(fill_value=0) * 100
all_dept_attr = all_dept_attr.round(2)

# 调整列名和索引,匹配目标格式
all_dept_attr = all_dept_attr.reset_index().rename(columns={'yes': 'Yes', 'no': 'No', 'dept': '部门'})

# 生成批量HTML表格行
table_rows = ""
for _, row in all_dept_attr.iterrows():
    table_rows += f"""
<tr>
<td style="text-align: left;">{row['部门']}</td>
<td style="text-align: left;">{row['Yes']}</td>
<td style="text-align: left;">{row['No']}</td>
</tr>
"""

# 拼接完整HTML表格
full_target_html = f"""
<h2>表格名称:按部门划分的流失率</h2>
<div class="s-table-container">
<table class="s-table">
<thead>
<tr>
<th style="text-align: left;">部门</th>
<th style="text-align: left;">Yes</th>
<th style="text-align: left;">No</th>
</tr>
</thead>
<tbody>
{table_rows}
</tbody>
</table>
</div>
"""

print(full_target_html)

内容的提问来源于stack exchange,提问作者Akalika Callistus Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:18:19