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

如何使用Pandas按bundle id分组CSV文件并为指定表头加前缀?

用Pandas实现CSV数据的分组与表头重命名需求

完全可以用Pandas实现你的需求,以下是具体的实现步骤和代码示例:

步骤1:导入Pandas并读取CSV文件

首先导入Pandas库,然后读取你的CSV数据文件:

import pandas as pd

# 替换为你的CSV文件路径
df = pd.read_csv("your_data.csv")

步骤2:处理表头前缀(source为'a'的情况)

假设你的数据包含bundle_id、source以及其他数据列(如value1、value2等),我们需要为source='a'对应的非标识列添加seed_前缀。可以通过将数据拆分为子集处理后再合并:

# 筛选source为'a'的数据并复制
df_seed = df[df["source"] == "a"].copy()
# 为除bundle_id和source外的列添加前缀
df_seed.columns = [
    f"seed_{col}" if col not in ["bundle_id", "source"] else col 
    for col in df_seed.columns
]

# 筛选其他source的数据
df_other = df[df["source"] != "a"].copy()

步骤3:按bundle_id分组合并数据

将处理后的两个子集按bundle_id合并,得到最终的分组结果(这里采用外连接保证所有bundle_id都被保留):

# 按bundle_id合并数据
final_df = pd.merge(df_other, df_seed, on="bundle_id", how="outer")

# 如果需要将同一bundle_id的行聚合为单行(比如取第一个非空值),可以用groupby
final_df = final_df.groupby("bundle_id").first().reset_index()

可选:用透视表实现宽表转换

如果你的原始数据是长格式(每行对应一个bundle_id+source+指标的组合),可以用透视表更简洁地实现需求:

# 将数据转换为长格式
df_long = df.melt(id_vars=["bundle_id", "source"], var_name="metric", value_name="value")
# 为source='a'的指标添加前缀
df_long["metric"] = df_long.apply(
    lambda row: f"seed_{row['metric']}" if row["source"] == "a" else row["metric"],
    axis=1
)
# 转回宽格式并按bundle_id分组
final_df = df_long.pivot_table(
    index="bundle_id",
    columns="metric",
    values="value",
    aggfunc="first"
).reset_index()

运行上述代码后,final_df就是符合你要求的输出结果。

内容的提问来源于stack exchange,提问作者Gururaj B R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:35:17