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

如何拆分Pandas数据框中ADMINCOORDINATOR行并修改对应字段值

Pandas数据框拆分需求解决方案

需求说明

需要将数据框中Membership为ADMINCOORDINATOR的行拆分为两行:

  • 一行Membership设为ADMIN,Specs设为160
  • 另一行Membership设为COORDINATOR,Specs设为180
    同时保持原始数据的排序顺序。

实现步骤及代码

1. 创建原始数据框

首先构造题目中的初始数据:

import pandas as pd

data = {
    'Name': ['Adam', 'James', 'Michael', 'Lina', 'Alexey', 'David'],
    'Membership': ['NORMAL', 'NORMAL', 'ADMINCOORDINATOR', 'NORMAL', 'ADMINCOORDINATOR', 'NORMAL'],
    'Specs': [170] * 6
}
df = pd.DataFrame(data)

2. 分离并处理数据

将数据分为正常行和需要拆分的行,分别处理后再合并:

# 提取无需拆分的NORMAL行
normal_df = df[df['Membership'] == 'NORMAL'].copy()

# 提取需要拆分的ADMINCOORDINATOR行
to_split_df = df[df['Membership'] == 'ADMINCOORDINATOR'].copy()

# 生成ADMIN类型的行
admin_df = to_split_df.assign(Membership='ADMIN', Specs=160)

# 生成COORDINATOR类型的行
coordinator_df = to_split_df.assign(Membership='COORDINATOR', Specs=180)

# 按原始索引顺序合并所有数据,使用mergesort保证稳定排序
result_df = pd.concat([normal_df, admin_df, coordinator_df]) \
              .sort_index(kind='mergesort') \
              .reset_index(drop=True)

3. 验证结果

执行上述代码后,result_df即为目标格式的数据框:

Name    Membership  Specs
0   Adam    NORMAL      170
1   James   NORMAL      170
2   Michael ADMIN       160
3   Michael COORDINATOR 180
4   Lina    NORMAL      170
5   Alexey  ADMIN       160
6   Alexey  COORDINATOR 180
7   David   NORMAL      170

另一种简洁实现方式(使用explode)

如果偏好更简洁的写法,可以利用explode方法直接展开列表:

# 为需要拆分的行生成对应列表,其余行保持单个元素的列表
df_processed = df.assign(
    Membership=df['Membership'].map(lambda m: ['ADMIN', 'COORDINATOR'] if m == 'ADMINCOORDINATOR' else [m]),
    Specs=df.apply(lambda row: [160, 180] if row['Membership'] == 'ADMINCOORDINATOR' else [row['Specs']], axis=1)
)

# 展开列表并重置索引
result_df = df_processed.explode(['Membership', 'Specs']).reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:15:32