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

如何在Pandas DataFrame中遍历行并输出指定格式的期望结果?

解决Pandas遍历行输出格式问题

看起来你是因为没正确处理同ID下的多行数据,或者在循环中错误引用了整列而非当前行的值,才导致输出不符合预期。我来给你一步步解决这个问题:

首先模拟你的数据结构

假设你的DataFrame包含id、company_name和acceptance_rate这几列(如果你的接受率列名是world acceptance rate,只需要替换代码里的对应字段即可):

import pandas as pd

# 示例数据,和你的期望输出对应
data = {
    'id': [24922, 24922, 24924, 25096, 25096, 25096],
    'company_name': ['YES BANK LTD', 'NOMURA SECURITIES CO LTD', 'ZENSAR TECHNOLOGIES LTD', 'TUI AG', 'CITIGROUP INC', 'UBS INVESTMENT BANK'],
    'acceptance_rate': [97, 91, 97, 94, 93, 91]
}
df = pd.DataFrame(data)

正确的实现方法

核心思路是先按ID分组,把同一ID下的所有公司条目拼接起来,再组合成你要的格式:

方法1:使用groupby+循环遍历分组

# 存储每个ID对应的格式化字符串
result_segments = []

# 按ID分组处理
for id_num, group in df.groupby('id'):
    # 格式化当前分组内的每个公司条目
    company_strings = [f"{row['company_name']} ({row['acceptance_rate']}%)" for _, row in group.iterrows()]
    # 拼接成ID开头的片段
    segment = f"{id_num} {' ; '.join(company_strings)}"
    result_segments.append(segment)

# 把所有片段拼接成最终输出
final_output = ' '.join(result_segments)
print(final_output)

方法2:更简洁的groupby+apply

如果你喜欢更紧凑的代码,可以用apply来处理分组:

def format_group(group):
    # 格式化分组内的每个条目
    entries = group.apply(lambda x: f"{x['company_name']} ({x['acceptance_rate']}%)", axis=1)
    # 返回ID+拼接后的条目
    return f"{group['id'].iloc[0]} {' ; '.join(entries)}"

# 生成最终输出
final_output = ' '.join(df.groupby('id').apply(format_group))
print(final_output)

输出结果

两种方法都会得到你期望的格式:

24922 YES BANK LTD (97%) ; NOMURA SECURITIES CO LTD (91%) 24924 ZENSAR TECHNOLOGIES LTD (97%) 25096 TUI AG (94%) ; CITIGROUP INC (93%) ; UBS INVESTMENT BANK (91%)

你之前出错的原因推测

你提到每一行都只输出"world acceptance rate",大概率是这两个问题之一:

  1. 没有按ID分组,直接遍历每一行时,错误地引用了整个列(比如写了df['world acceptance rate']而非row['world acceptance rate'])
  2. 没有处理同ID下的多行数据,导致每个行单独输出,没有把同一ID的条目整合在一起

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:34:11