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

如何用Python将分组列拆分为多列并保留对应列值?

Python实现分组列拆分与多列映射填充

针对你需要的分组列拆分、多列填充需求,用Python的pandas库可以轻松实现,下面是详细步骤和代码:


1. 导入库并准备数据

首先导入pandas,然后将输入数据转换为DataFrame(实际使用时可直接用pd.read_csv()读取本地文件):

import pandas as pd

# 模拟输入数据(替换成你的实际数据读取逻辑)
data = {
    'Column1': ['Group1']*4 + ['Group2']*4 + ['Group3']*2,
    'Column2': ['Value1','Value2','Value3','Value4']*2 + ['Value1','Value2'],
    'Column3': ['V1','V2','V3','V4','x1','x2','x3','x4','y1','y2']
}
df = pd.DataFrame(data)

2. 生成分组内的行对齐标识

为了让不同分组的同位置数据(比如每个Group的Value1)放在同一行,给每个分组内的行添加序号:

# 给每个分组内的行从0开始计数,用于后续对齐
df['row_id'] = df.groupby('Column1').cumcount()
  • groupby('Column1'):按Column1的分组(Group1/Group2/Group3)拆分数据
  • cumcount():给每个分组内的行生成连续序号,保证同位置数据的序号一致

3. 拆分Column2为分组列

使用pivot函数重塑数据,将分组名转为列名,填充对应Column2的值:

# 按row_id对齐,将Column1的分组转为列,填充Column2的值
df_col2 = df.pivot(index='row_id', columns='Column1', values='Column2').reset_index(drop=True)
  • pivot(index='row_id', columns='Column1', values='Column2'):以row_id为行标识,Column1的分组为列,Column2的值为填充内容
  • reset_index(drop=True):移除多余的row_id索引,得到干净的分组列

4. 拆分Column3为带前缀的分组列

同样用pivot处理Column3,然后给列名添加Column3.前缀:

# 处理Column3并添加前缀
df_col3 = df.pivot(index='row_id', columns='Column1', values='Column3').reset_index(drop=True)
df_col3.columns = [f'Column3.{col}' for col in df_col3.columns]
  • 列表推导式[f'Column3.{col}' ...]:给每个分组列名添加前缀,生成Column3.Group1这类列名

5. 合并结果并调整格式

将处理好的两部分数据按列合并,可按需调整字符串大小写:

# 按列合并两个结果DataFrame
final_df = pd.concat([df_col2, df_col3], axis=1)
# 可选:将字符串转为小写(匹配你期望的输出格式)
final_df = final_df.applymap(lambda x: x.lower() if isinstance(x, str) else x)

6. 查看最终结果

输出不带索引的结果,格式与你期望的一致:

print(final_df.to_string(index=False))

关键说明

  • 无论实际数据有多少个分组,代码无需修改,pandas会自动识别所有分组并生成对应列
  • 缺失的内容会自动填充为NaN,符合你的输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:44:58