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

Python中如何将多个DataFrame转换为指定分类统计格式?

这个需求完全可以实现,用Pandas做列级聚合统计就能完成,具体实现步骤如下:

步骤1:导入依赖并构造示例DataFrame

import pandas as pd
import numpy as np

# 构造CategoryA的示例数据
df_a = pd.DataFrame({
    'colA': ['a']*3,
    'colB': ['a']*3,
    'colC': ['a']*3,
    'colD': [np.nan]*3
})

# 构造CategoryB的示例数据
df_b = pd.DataFrame({
    'colA': ['a']*3,
    'colB': ['a']*3,
    'colC': ['a']*3,
    'colD': ['a']*3
})

步骤2:编写通用统计处理函数

def process_category_df(df, category_name):
    result_list = []
    # 逐列统计非空a的数量
    for col in df.columns:
        a_count = df[col].eq('a').sum()
        col_value = f"{a_count}a" if a_count > 0 else 0
        result_list.append({
            "category": category_name,
            "Description": col,
            "value": col_value
        })
    # 计算当前分类的总和
    total_count = df.eq('a').sum().sum()
    result_list.append({
        "category": category_name,
        "Description": "Total",
        "value": f"{total_count}a"
    })
    return pd.DataFrame(result_list)

步骤3:处理数据并输出目标格式

# 分别处理两个分类的数据
df_res_a = process_category_df(df_a, "category A")
df_res_b = process_category_df(df_b, "category B")

# 合并结果
final_res = pd.concat([df_res_a, df_res_b], ignore_index=True)

# 可选:让同一分类名称仅在第一行显示,更贴合示例展示效果
final_res['category'] = final_res['category'].mask(final_res['category'].duplicated(), '')

# 输出结果
print(final_res.to_string(index=False))

运行输出结果

category Description value
category A        colA    3a
                   colB    3a
                   colC    3a
                   colD     0
                  Total    9a
category B        colA    3a
                   colB    3a
                   colC    3a
                   colD    3a
                  Total   12a

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:45:04