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

如何用Pandas按App ID及Star分组计算开发者回复评论占比

百万行Pandas DataFrame分组计算开发者回复占比的实现方法

需求说明

针对百万行规模的Pandas DataFrame,按App ID分组后,再对每个App ID下的评论按Star(评分)细分,计算每个评分分组中开发者已回复评论的占比。

实现步骤

1. 标记是否有开发者回复

首先识别每条评论是否收到有效开发者回复,需处理空字符串、仅含空白字符(换行、空格)的无效回复:

# 矢量化处理,高效判断有效回复(适合百万行数据,性能优于apply)
df['has_reply'] = (df['DeveloperReply'].str.strip() != '').astype(int)
  • str.strip():去除回复内容首尾的空白字符(包括换行、空格)
  • 比较结果转为整数1(有有效回复)或0(无有效回复)

2. 分组计算回复占比

通过groupby按App ID和Star分层分组,统计每组的总评论数与已回复评论数,最终计算占比并格式化为百分比:

# 分组统计并生成百分比结果
result = df.groupby(['App ID', 'Star']).agg(
    总评论数=('has_reply', 'count'),
    已回复数=('has_reply', 'sum')
).assign(
    Percentage=lambda x: (x['已回复数'] / x['总评论数'] * 100).round(2).astype(str) + '%'
).reset_index()[['App ID', 'Star', 'Percentage']]
  • groupby(['App ID', 'Star']):实现先按应用ID分组,再按评分细分的双层分组逻辑
  • agg:一次性统计每组的总评论数(count)和已回复评论数(sum,利用has_reply的1/0特性)
  • assign:计算占比并格式化为带%的字符串,保留两位小数

3. 结果示例

针对提供的示例数据,运行后得到的结果如下:

App IDStarPercentage
apple3100.0%
apple40.0%
apple5100.0%
banana1100.0%
banana5100.0%
mango1100.0%
mango5100.0%

性能优化建议

针对百万行规模的数据,优先使用矢量化操作(如str.strip())而非apply,避免逐行处理带来的性能损耗;若内存紧张,可考虑使用dask.dataframe进行并行分块处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:00:54