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

如何计算Indicator列的出现占比并生成无多级索引的可绘图结果集

分组计算Indicator出现占比的实现方案

嘿,这事儿不难,我来带你一步步搞定这个需求——按照Date和Hour分组,算出每个分组里不同Indicator的出现占比,输出成无多级索引的规整表格。

第一步:准备数据和工具

首先我们得导入pandas,然后把你给的原始数据转换成DataFrame:

import pandas as pd

# 把原始数据转换成DataFrame
raw_data = {
    'Date': ['5/10/2018', '5/10/2018', '5/10/2018', '5/10/2018'],
    'Hour': [9, 9, 9, 9],
    'Indicator': ['F', 'F', 'F', 'NF']
}
df = pd.DataFrame(raw_data)

第二步:核心计算逻辑

这里用pandas的分组功能,结合值计数和百分比转换就能轻松搞定:

# 按Date+Hour分组,计算每个Indicator的占比并格式化
result_df = df.groupby(['Date', 'Hour'])['Indicator']\
              .value_counts(normalize=True)  # 计算分组内的占比比例
              .mul(100)  # 把比例转换成百分比数值
              .reset_index(name='%Indicator')  # 把多级索引拆成普通列,指定新列名

# 如果需要把百分比转成整数(去掉小数点),可以添加这一行
result_df['%Indicator'] = result_df['%Indicator'].astype(int)

简单拆解下逻辑:

  • groupby(['Date', 'Hour']):按日期和小时组合分组,确保我们只在同一时间维度内计算占比
  • value_counts(normalize=True):统计每个分组里不同Indicator的数量,并自动转换成占比
  • mul(100):把0.75这类小数比例转成75的百分比数值形式
  • reset_index:这步是关键,它把分组后生成的多级索引拆成普通列,完美符合你要的无多级索引格式

第三步:查看最终结果

运行下面的代码就能得到你想要的结果:

print(result_df)

输出结果如下:

Date  Hour Indicator  %Indicator
0  5/10/2018     9         F           75
1  5/10/2018     9        NF           25

内容的提问来源于stack exchange,提问作者Suhas R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:06