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

Pandas新手如何将for循环输出的姓名与计算结果转为两列DataFrame

实现方案

方案1:基于你现有循环改造(符合你想存为字典/列表再转DataFrame的思路)

你只需要在循环外初始化一个空列表存储每一行的结果,循环内把每次计算的姓名和结果存入列表,最后直接转DataFrame即可:

import pandas as pd

names = df['Participant Name, Number'].unique()
# 初始化空列表存储结果
result_list = []

for name in names:
    unique_name_df = df[df['Participant Name, Number'] == name]
    badge_types = unique_name_df['Dosimeter Location'].unique()

    collar = 0.0
    chest = 0.0
    if 'Collar' in badge_types:
        collar = unique_name_df[unique_name_df['Dosimeter Location'] == 'Collar']['Total DDE'].astype(float).sum()
    if 'Chest' in badge_types:
        chest = unique_name_df[unique_name_df['Dosimeter Location'] == 'Chest']['Total DDE'].astype(float).sum()

    value = None
    if len(badge_types) == 1:
        if 'Collar' in badge_types:
            value = collar
        elif 'Chest' in badge_types:
            value = chest
    # 把当前结果加入列表,这里的key就是最终DataFrame的列名
    result_list.append({
        'Participant Name, Number': name,
        'Total Calculated DDE': value
    })

# 转换为DataFrame
result_df = pd.DataFrame(result_list)
# 打印结果
print(result_df)

注意:你原代码未处理参与者同时有Collar和Chest徽章的情况,上面代码给这类情况的value默认赋值为None,你可以根据自己的业务需求调整这部分逻辑。

方案2:更高效的Pandas原生写法(无需手动写循环)

用Pandas的分组聚合功能可以更简洁实现同样需求,性能也比手动循环更高:

import pandas as pd

# 先把Total DDE转为浮点型,避免重复转换
df['Total DDE'] = df['Total DDE'].astype(float)

# 按人员和徽章位置分组求和
grouped = df.groupby(['Participant Name, Number', 'Dosimeter Location'])['Total DDE'].sum().unstack(fill_value=0)

# 筛选只有单一徽章类型的人员
grouped['badge_count'] = grouped[['Collar', 'Chest']].astype(bool).sum(axis=1)
single_badge = grouped[grouped['badge_count'] == 1].copy()

# 计算最终结果
single_badge['Total Calculated DDE'] = single_badge['Collar'].where(single_badge['Collar'] > 0, single_badge['Chest'])

# 提取需要的列作为最终结果
result_df = single_badge.reset_index()[['Participant Name, Number', 'Total Calculated DDE']]
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 19:36:03