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

pandas如何向groupby分组插入仅prop_dtls改为nano的新行

pandas实现分组后插入指定行方案

前置说明

你问题描述中写的groupby(by=['md_code','prop_dtls'])属于笔误,从期望输出可判断实际分组维度为effective_date和md_code的组合,以下方案均基于该分组逻辑实现。

完整实现代码

步骤1:构造示例DataFrame

import pandas as pd

# 按你给出的原始数据构造
df = pd.DataFrame([
    ["2021-03-23", "comm", "car"],
    ["2021-03-23", "comm", "bike"],
    ["2021-03-23", "comm", "scooter"],
    ["2021-03-24", "comm", "car"],
    ["2021-03-24", "comm", "bike"],
    ["2021-03-24", "comm", "scooter"],
    ["2021-03-12", "dme", "bus"],
    ["2021-03-12", "dme", "eco"],
    ["2021-03-12", "dme", "alto"],
    ["2021-03-14", "dme", "bus"],
    ["2021-03-14", "dme", "eco"],
    ["2021-03-14", "dme", "alto"],
    ["2021-03-12", "equity", "bus"],
    ["2021-03-12", "equity", "eco"],
    ["2021-03-12", "equity", "alto"],
    ["2021-03-14", "equity", "bus"],
    ["2021-03-14", "equity", "eco"],
    ["2021-03-14", "equity", "alto"],
], columns=["effective_date", "md_code", "prop_dtls"])

方案1:groupby+apply实现(逻辑直观,适合小数据量)

def add_nano_row(group):
    # 取分组第一行修改prop_dtls为nano,拼接在原分组末尾
    new_row = group.iloc[:1].copy()
    new_row["prop_dtls"] = "nano"
    return pd.concat([group, new_row], ignore_index=True)

# 按effective_date和md_code分组执行插入逻辑
df_result = df.groupby(
    by=["effective_date", "md_code"],
    group_keys=False
).apply(add_nano_row).reset_index(drop=True)

方案2:批量生成新增行拼接(性能更高,适合大数据量)

# 提取所有唯一的分组组合
unique_groups = df[["effective_date", "md_code"]].drop_duplicates()
# 生成所有待插入的nano行
add_rows = unique_groups.assign(prop_dtls="nano")

# 新增排序标记保证输出顺序符合要求
df["sort_flag"] = 0
add_rows["sort_flag"] = 1

# 合并原数据与新增行后排序、清理标记列
df_result = pd.concat([df, add_rows], ignore_index=True)\
    .sort_values(by=["effective_date", "md_code", "sort_flag"])\
    .drop("sort_flag", axis=1)\
    .reset_index(drop=True)

结果验证

执行以下代码可打印符合你要求的csv格式输出:

print(df_result.to_csv(index=False))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:15:03