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

如何在Pandas中复制Range列为A的行并为Activity列添加不同内容?

Pandas实现指定行复制并添加对应Activity列值

初始DataFrame

import pandas as pd 
table = pd.DataFrame({'Range': ["A", "B", "C", "A"],'First Name': ["W","X","Y", "Z"], 'ID': [1,2,3,4]})

初始DataFrame状态

需求说明

当Range列的值为"A"时,复制该行,并在新增的Activity列中分别填入"Monitoring"和"Informant";非"A"的行保持原样,Activity列留空,最终效果如下:
期望的DataFrame输出

当前尝试的代码

columns_new = pd.DataFrame(columns=["NO ID","Level", "Name", "Activity"])

row_modified = []

for index, row in table.iterrows():
    rang = row['Range']
    f_name= row['First Name']
    n_id = row['ID']

    columns_new.loc[index, "NO ID"] = n_id
    columns_new.loc[index, "Level"] = rang
    columns_new.loc[index, "Name"] = f_name

    if  rang == "A":
        row_modified.append(row)
        row_modified.append(row)
    else:
        row_modified.append(row)

column_new2 = pd.DataFrame(row_modified)
column_new2

运行后仅实现了行复制,但未添加Activity列的指定值,当前结果:
当前代码运行结果

解决方案

以下两种方式均可实现需求:

方法1:基于循环修改(适配现有思路)

在循环中直接处理Activity列的值,复制行时分别赋予对应内容:

row_modified = []

for _, row in table.iterrows():
    # 将行转为字典方便修改
    row_dict = row.to_dict()
    if row['Range'] == "A":
        # 第一行添加Monitoring
        row_dict['Activity'] = "Monitoring"
        row_modified.append(row_dict)
        # 复制一行并修改Activity为Informant
        row_dict_copy = row_dict.copy()
        row_dict_copy['Activity'] = "Informant"
        row_modified.append(row_dict_copy)
    else:
        # 非A的行Activity留空
        row_dict['Activity'] = ""
        row_modified.append(row_dict)

# 转换为DataFrame并调整列顺序匹配期望输出
result = pd.DataFrame(row_modified)[['Range', 'First Name', 'ID', 'Activity']]
print(result)

方法2:Pandas矢量化操作(更高效)

利用explode方法实现行扩展,避免循环:

# 为每行匹配对应的Activity列表:A对应两个值,其他对应空值列表
table['Activity'] = table['Range'].apply(lambda x: ["Monitoring", "Informant"] if x == "A" else [""])
# 按Activity列展开行
result = table.explode('Activity').reset_index(drop=True)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:53:23