You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中计算指定公式并单行输出命名与结果?

解决Pandas单行打印对应列与计算结果的问题

首先,咱们先理清问题:你想要把named列的每个值和对应的计算结果(公式my - all/headers)逐行打印出来,但之前的代码因为把整个Series转成字符串拼接,导致输出不是每行对应的格式。

步骤1:确保数据计算正确

首先先完成计算,建议先新增一个结果列,这样后续处理更清晰:

import pandas as pd

# 读取数据(你的原有代码没问题)
df = pd.read_csv(file, skiprows=1, names=['all','my','headers','named'])

# 计算结果列:注意运算顺序,除法优先级高于减法,和你的公式一致
df['calculated_result'] = df['my'] - df['all'] / df['headers']

步骤2:逐行打印对应的值

接下来有几种简单的方法实现单行打印的需求:

方法一:使用iterrows()遍历每行

这是最直观的方式,逐行读取数据并打印:

for _, row in df.iterrows():
    # 可以用f-string格式化输出,还能控制小数位数
    print(f"{row['named']} {row['calculated_result']:.2f}")

方法二:用zip()配对两个Series

把named列和结果列配对后遍历,效率比iterrows稍高:

for name, result in zip(df['named'], df['calculated_result']):
    print(f"{name} {result:.2f}")

方法三:使用apply()逐行处理

用apply指定按行处理,一行代码搞定:

df.apply(lambda row: print(f"{row['named']} {row['calculated_result']:.2f}"), axis=1)

为什么你的原有代码不行?

你之前的代码print(df['named'] + " " + str( (df['my'].astype(float) - df['all'].astype(float)) / df['headers'].astype(float) ))是把整个named Series和整个计算结果的Series转成字符串后拼接,这样会输出类似top bottom [49.19, 35.15]的格式,而不是每行对应的值。

示例输出

针对你给出的测试数据,运行上述代码后会输出:

top 49.19
bottom 35.15

内容的提问来源于stack exchange,提问作者johnnyb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:29:25