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

如何基于两个现有DataFrame生成指定矩阵结构的新DataFrame

实现方案

核心逻辑

直接将df1的id列所有取值作为结果表的新列,每列的数值直接复用df2的mins列数值,无需关联匹配,天然适配不同数据量的场景。

通用实现代码

基础版(易读易维护,适合绝大多数场景)

import pandas as pd

# ------------- 以下替换为你自己的df1、df2读取逻辑即可 -------------
# 示例df1构造
df1 = pd.DataFrame({'id': ['MC01', 'MC02', 'MC03']})
# 示例df2构造
df2 = pd.DataFrame({
    'employee': ['A', 'B', 'C', 'D', 'E', 'F'],
    'mins': [8.0, 7.5, 6.3, 9.1, 8.4, 6.1]
})
# -----------------------------------------------------------------

# 核心处理
res = df2.copy()
# 批量生成id对应的列,每列赋值为mins的值
for col_name in df1['id']:
    res[col_name] = res['mins']

# 不需要保留原mins列可打开下一行注释
# res = res.drop(columns=['mins'])

高性能版(向量化实现,适合十万行以上的大数据量场景)

import pandas as pd
import numpy as np

# 读取df1、df2的逻辑同上
df1 = pd.DataFrame({'id': ['MC01', 'MC02', 'MC03']})
df2 = pd.DataFrame({
    'employee': ['A', 'B', 'C', 'D', 'E', 'F'],
    'mins': [8.0, 7.5, 6.3, 9.1, 8.4, 6.1]
})

# 核心向量化处理,无循环
res = pd.concat([
    df2,
    pd.DataFrame(
        np.tile(df2['mins'].values.reshape(-1, 1), len(df1)),
        columns=df1['id'].values
    )
], axis=1)

适配性说明

  • 自动适配df1的id数量:不管df1后续新增多少个id值,都会自动生成对应数量的新列
  • 自动适配df2的行数:不管df2有多少条员工记录,所有新列都会自动同步填充mins的数值
  • 不限制数值范围:mins列的数值类型、取值变化不影响运行逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:09