如何将行数据转置为列数据并按指定规则求和?求实现代码
没问题,我来帮你搞定这个需求!下面提供两种实现方式,一种是用pandas(处理表格数据超方便的工具),另一种是纯Python代码,不用额外安装库,你可以按需选择:
方法一:使用pandas实现(推荐,代码简洁易读)
import pandas as pd # 原始行数据 raw_data = [ ["Steve", 10], ["Arnold", 15], ["Arnold", 20], ["Joseph", 30], ["Steve", 25] ] # 转置为列格式的标准表格 df = pd.DataFrame(raw_data, columns=["Name", "Price"]) # 按Name分组求和 sum_by_name = df.groupby("Name")["Price"].sum() # 计算目标结果 sum_arnold = sum_by_name["Arnold"] sum_steve_joseph = sum_by_name["Steve"] + sum_by_name["Joseph"] # 输出结构化结果表格 result_df = pd.DataFrame({ "Sum(Arnold)": [sum_arnold], "sum(steve + joseph)": [sum_steve_joseph] }) print(result_df)
运行这段代码后,你会得到如下输出:
Sum(Arnold) sum(steve + joseph) 0 35 65
方法二:纯Python实现(无需额外安装库)
如果不想安装pandas,用基础Python也能轻松实现:
# 原始行数据 raw_data = [ ["Steve", 10], ["Arnold", 15], ["Arnold", 20], ["Joseph", 30], ["Steve", 25] ] # 初始化字典存储每个Name的总价格 sum_dict = {} for name, price in raw_data: sum_dict[name] = sum_dict.get(name, 0) + price # 计算目标结果 sum_arnold = sum_dict["Arnold"] sum_steve_joseph = sum_dict["Steve"] + sum_dict["Joseph"] # 格式化输出结果 print(f"Sum(Arnold) sum(steve + joseph)") print(f"{sum_arnold:<14}{sum_steve_joseph}")
运行后输出:
Sum(Arnold) sum(steve + joseph) 35 65
两种方法都能完美满足你的需求,要是有啥细节想调整随时说哈!
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

