Pandas统计另一DataFrame指定区间人数及占比填充目标表
解决方案
直接运行以下pandas代码即可完成区间人数统计和占比计算,输出结果和预期完全匹配:
import pandas as pd # 提取年龄序列、计算总样本量 age_col = df_ages["Age"] total = len(age_col) # 统计每个闭区间[Min, Max]内的年龄总数 df_count["counts"] = df_count.apply( lambda row: age_col.between(row["Min"], row["Max"], inclusive="both").sum(), axis=1 ) # 计算百分比,保留1位小数 df_count["percentage"] = (df_count["counts"] / total * 100).round(1)
大数据量优化
如果你的数据集量级在10万行以上,逐行apply的运行效率较低,可以换用pandas内置分箱函数pd.cut实现,性能提升明显:
# 构造不重叠的分箱边界 bin_edges = sorted(set(df_count["Min"].tolist() + (df_count["Max"] + 1).tolist())) # 分箱计数 count_result = pd.cut( age_col, bins=bin_edges, right=False, include_lowest=True ).value_counts().sort_index() df_count["counts"] = count_result.values df_count["percentage"] = (df_count["counts"] / total * 100).round(1)
内容的提问来源于stack exchange,提问作者9Jo
相关产品推荐
相关产品推荐

