如何在Pandas DataFrame中为单列添加总计行
解决DataFrame仅指定列添加总计行的问题
你的问题出在直接调用File_Name.sum()时,pandas会对不同数据类型的列执行不同操作:字符串列会做拼接,金额列如果是字符串类型也会被当成字符串拼接,而非数值求和。要实现仅对金额列求和、其他列留空的效果,可以用以下几种方式:
方法1:分步构建总计行再合并
先创建一个空的Series,仅给金额列赋值求和结果,其他列设为空字符串,再合并到原DataFrame:
import pandas as pd # 假设金额列是第3列,用索引定位(索引从0开始) amount_col_idx = 2 amount_col_name = File_Name.columns[amount_col_idx] # 创建总计行数据 total_row = pd.Series(index=File_Name.columns, dtype=object) total_row[:] = '' # 所有列先设为空字符串 total_row[amount_col_name] = File_Name.iloc[:, amount_col_idx].sum() # 将总计行添加到DataFrame File_Name = pd.concat([File_Name, total_row.to_frame().T], axis=0)
方法2:直接用loc赋值(更简洁)
先添加一行空值,再单独给金额列设置求和结果:
# 先添加总计行,所有列设为空 File_Name.loc['Total'] = '' # 定位金额列并赋值求和结果 File_Name.loc['Total', File_Name.columns[2]] = File_Name.iloc[:,2].sum()
关键前置处理
如果金额列当前是字符串类型(比如带$符号),需要先转成数值类型才能正确求和:
# 去除$符号并转为数值,errors='coerce'处理无法转换的异常值 File_Name.iloc[:,2] = pd.to_numeric(File_Name.iloc[:,2].str.replace('$', ''), errors='coerce')
内容的提问来源于stack exchange,提问作者SHW
相关产品推荐
相关产品推荐

