如何对DataFrame中指定行的数值求和并仅输出目标内容
如何对DataFrame中指定行的数值求和并仅输出目标内容
嗨,我看你现在的需求是只输出DataFrame和指定行(价格行)的数值总和,现有代码里有两个小问题导致结果不符合预期,我来帮你调整下:
首先说下现有代码的问题:
- 你输入的价格是字符串类型,直接存到DataFrame里的话,
sum方法会做字符串拼接(比如输入1和2会变成"12"),而不是数值相加 - 用
dd.sum(axis=1)会计算每一行的总和,包括OBJECTS行(这行是字符串,求和没有意义),而你只需要PRICE行的总和
接下来是修改后的代码,完全贴合你的需求:
import pandas as pd # 初始化存储物品和价格的列表(别用list当变量名,会覆盖内置类型) object_list = [] price_list = [] # 获取要输入的物品数量 item_count = input("ENTER THE NUMBER OF THINGS\n") item_count = int(item_count) # 收集物品名称输入 for _ in range(item_count): obj_name = input("OBJECTS\n") object_list.append(obj_name) # 收集价格输入,同时转成整数(如果需要支持小数就换成float(price_input)) for _ in range(item_count): price_input = input("PRICE\n") price_list.append(int(price_input)) # 创建你需要的DataFrame结构 df = pd.DataFrame( [object_list, price_list], index=["OBJECTS", "PRICE"], columns=[str(i+1) for i in range(item_count)] ) # 第一步:输出DataFrame print(df) # 第二步:只计算PRICE行的数值总和,直接取这一行求和 total_price = df.loc["PRICE"].sum() # 按你要的格式输出总和 print(f"Total: {total_price}")
我来拆解下关键修改点:
- 把输入的价格转成了整数类型,确保
sum会做数值相加,而不是字符串拼接 - 用
df.loc["PRICE"].sum()精准获取价格行的总和,不会带上物品行的无效计算结果 - 变量名换成了更清晰的名字,避免和Python内置的
list冲突
举个实际运行的例子:
当你输入2作为物品数量,然后依次输入Object1、Object2作为物品,1、2作为价格时,输出会是:
1 2 OBJECTS Object1 Object2 PRICE 1 2 Total: 3
完全符合你想要的只显示DataFrame和价格总和的需求~
内容来源于stack exchange
相关产品推荐
相关产品推荐

