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

如何使用Python将CSV中的多组键值对转换为指定格式的矩阵

非结构化键值对CSV转矩阵解决方案

实现逻辑

  • 先将原始DataFrame中每一组(分组名称+对应数值列)单独拆分为长格式数据
  • 合并所有组的长格式数据后,通过透视表转换为目标矩阵,无匹配位置自动填充0

代码实现

假设你读取的原始CSV数据存储在变量raw_df中,执行以下代码即可得到目标结果:

import pandas as pd

# 提取所有分组名称(过滤掉CSV读取时自动生成的Unnamed数值列名)
group_names = [col for col in raw_df.columns if not col.startswith("Unnamed")]

# 逐个处理每个分组的键值数据
long_df_list = []
for group in group_names:
    # 获取当前分组对应的键列、数值列位置
    key_col_idx = raw_df.columns.get_loc(group)
    value_col_idx = key_col_idx + 1
    # 提取当前分组的键值对,去除空行
    temp_df = raw_df.iloc[:, [key_col_idx, value_col_idx]].dropna()
    temp_df.columns = ["item_key", "item_value"]
    temp_df["group_name"] = group
    long_df_list.append(temp_df)

# 合并所有分组数据,透视转为目标矩阵
full_long_df = pd.concat(long_df_list, ignore_index=True)
result_matrix = full_long_df.pivot(
    index="item_key", 
    columns="group_name", 
    values="item_value"
).fillna(0).astype(int)

结果说明

  • 输出的result_matrix索引就是所有唯一键(ABCGD、KANSL等),列名就是原始分组(PL1、AL1等),数值完全符合要求的格式
  • 如果需要把索引转为普通列,可在末尾追加代码:result_matrix = result_matrix.reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:06:01