如何在DataFrame中仅为单列添加总计行并为指定列加$符号
解决方案
步骤1:提前计算账单总计
先算出total列的总和,避免后续列转为字符串后无法计算:
total_sum = bill['total'].sum()
步骤2:格式化价格类列
将price和total列的数值转为带$的字符串,匹配你要的显示格式:
# price列格式化为"$ 数值" bill['price'] = bill['price'].apply(lambda x: f'$ {x}') # total列格式化为"$数值" bill['total'] = bill['total'].apply(lambda x: f'${x}')
步骤3:添加指定内容的总计行
不要直接给整行赋值单个值(会导致Pandas自动广播到所有列),而是指定仅item_name列显示"total bill",total列显示总计值,其余列留空:
bill.loc['total bill'] = ['', 'total bill', '', '', f'${total_sum}']
执行后得到的DataFrame效果如下:
item item_name qty price total 1 hamburgers 2 $ 10 $20 2 fries 2 $ 3 $6 3 water 1 $ 2 $2 total bill total bill $28
原代码问题说明
你之前的bill.loc['total bill'] = bill['total'].sum()会把总和填充到该行所有列,原因是Pandas会自动将单个值广播到整行的所有字段。通过明确指定每行各列的具体值,就能实现仅目标列显示内容的需求。
内容的提问来源于stack exchange,提问作者Erika
相关产品推荐
相关产品推荐

