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

Pandas字典类型数据的键重复与矩阵转置实现方法

实现方案

首先说明:你给出的期望结果字典存在语法小错误,index对应的值应为二维列表,即'index': [[27, 28, 29, 30, 31], [27, 28, 29, 30, 31], ...],以下是两种可直接运行的实现方法:

方法1:纯Python原生实现(无需第三方库)

# 原始数据
df = {'index': [27, 28, 29, 30, 31],
      'data': [[1, 2, 3, 4, 5, 6, 7],
               [8, 9, 10, 11, 12, 13, 14],
               [15, 16, 17, 18, 19, 20, 21],
               [22, 23, 24, 25, 26, 27, 28],
               [29, 30, 31, 32, 33, 34, 35]]}

# 1. 转置data二维数组
df['data'] = [list(col) for col in zip(*df['data'])]
# 2. 计算N:转置后data的列数
N = len(df['data'][0])
# 3. 重复index数组N次,生成二维列表
df['index'] = [df['index'].copy() for _ in range(N)]

# 打印验证结果
print(df)

运行后输出的df完全符合预期,data为转置后的7行5列数组,index为包含5个相同子列表的二维数组。

方法2:使用numpy实现(适合大规模数据场景)

import numpy as np

# 原始数据
df = {'index': [27, 28, 29, 30, 31],
      'data': [[1, 2, 3, 4, 5, 6, 7],
               [8, 9, 10, 11, 12, 13, 14],
               [15, 16, 17, 18, 19, 20, 21],
               [22, 23, 24, 25, 26, 27, 28],
               [29, 30, 31, 32, 33, 34, 35]]}

# 1. 转置data
df['data'] = np.array(df['data']).T.tolist()
# 2. 计算N
N = len(df['data'][0])
# 3. 重复index生成二维列表
df['index'] = np.tile(df['index'], (N, 1)).tolist()

# 打印验证结果
print(df)

注意:如果不需要保留原始index数组的可修改独立性,也可以直接用[df['index'] for _ in range(N)],但推荐加copy()避免后续修改一个子列表时所有子列表同步变更的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:48:00