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
相关产品推荐
相关产品推荐

