如何在Python中获取DataFrame每行对应计数并计算个体百分比贡献
嘿,这个需求用Pandas分分钟就能搞定,根本不用转列表折腾~我给你一步步说怎么实现:
第一步:确认你的DataFrame结构
先假设你已经有了导入好的DataFrame(如果还没创建,用下面的代码初始化):
import pandas as pd # 初始化你的数据 df = pd.DataFrame({ 'Name': ['User_1', 'User_2', 'User_3', 'User_4', 'User_5'], 'count': [3, 5, 2, 2, 8] })
第二步:计算总工作日天数
先算出所有用户的工作日总和,这是计算百分比的基础:
total_days = df['count'].sum() # 这里total_days的结果是20,和你例子里的一致
第三步:新增百分比贡献列
直接在原DataFrame里新增一列,计算每个用户的占比,还可以直接格式化成带%的字符串(方便在Dash里展示):
# 方法1:先计算数值再格式化 df['percentage_contribution'] = (df['count'] / total_days) * 100 # 保留两位小数并加上%符号 df['percentage_contribution'] = df['percentage_contribution'].round(2).astype(str) + '%' # 方法2:用lambda一步到位更简洁 df['percentage_contribution'] = df['count'].apply(lambda x: f"{(x / total_days) * 100:.2f}%")
最终结果
处理后的DataFrame会变成这样:
| Name | count | percentage_contribution |
|---|---|---|
| User_1 | 3 | 15.00% |
| User_2 | 5 | 25.00% |
| User_3 | 2 | 10.00% |
| User_4 | 2 | 10.00% |
| User_5 | 8 | 40.00% |
这样处理完的DataFrame直接就能在Dash里用啦——不管是用dash_table.DataTable展示表格,还是提取数据做柱状图/饼图可视化,都完全没问题。如果不想修改原DataFrame,只要先df.copy()创建一个副本再操作就行~
内容的提问来源于stack exchange,提问作者user15365664
相关产品推荐
相关产品推荐

