如何按Pandas DataFrame第5列Card排序并添加计数行与总计行
Pandas DataFrame分组统计与总计行实现方案
实现步骤:
- 对DataFrame按
Card列排序 - 按卡号分组计算行数,生成对应统计行
- 将原数据与统计行按组合并
- 添加总行数的总计行
代码实现:
import pandas as pd # 1. 按Card列排序 df_sorted = df.sort_values(by='Card') # 2. 生成每组的统计行 group_counts = df_sorted.groupby('Card').size().reset_index(name='count') # 构造和原表结构匹配的统计行,其他列留空(列名根据实际表调整) group_stats = pd.DataFrame() group_stats['Card'] = group_counts['Card'] group_stats['Trans Date'] = '' group_stats['Post Date'] = '' group_stats['Description'] = '' group_stats['Amount'] = '' group_stats['备注'] = f'行数统计: {group_counts["count"].values}' # 3. 按组合并原数据与统计行 result = pd.DataFrame() for card in df_sorted['Card'].unique(): # 提取当前卡号的所有数据行 data_rows = df_sorted[df_sorted['Card'] == card] # 提取当前卡号的统计行 stat_row = group_stats[group_stats['Card'] == card] # 合并到结果表 result = pd.concat([result, data_rows, stat_row], ignore_index=True) # 4. 添加总计行 total_row = pd.DataFrame([['总计', '', '', '', '', f'总行数: {len(df)}']], columns=df_sorted.columns) result = pd.concat([result, total_row], ignore_index=True)
效果对比:
原始DataFrame:
期望输出DataFrame:
内容的提问来源于stack exchange,提问作者Adataguy
相关产品推荐
相关产品推荐

