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

如何获取矩阵交叉值并写入Pandas主DataFrame的新增列

我们可以通过两种主流方案实现需求,首先约定变量名:主DataFrame记为df,存储交叉值的矩阵DataFrame记为matrix_df。

方案1:表合并实现(逻辑清晰,兼容性强)

先把宽格式的矩阵转换为长格式,再和主表按A、B两列关联即可:

# 给矩阵的行、列索引命名方便转换格式
matrix_long = matrix_df.rename_axis(index='A', columns='B')\
                       .reset_index()\
                       .melt(id_vars='A', var_name='B', value_name='C')
# 关联匹配值
df = df.merge(matrix_long, on=['A', 'B'], how='left')

方案2:索引直接取值(性能更高,适合大数据量场景)

利用矩阵的行、列索引直接匹配取值,不需要额外做表转换:

# 给矩阵的行索引命名为A
matrix_df = matrix_df.rename_axis('A')
# 直接按行、列匹配取值(pandas全版本兼容)
df['C'] = df.apply(lambda row: matrix_df.loc[row['A'], row['B']], axis=1)

如果你的pandas版本较旧,也可以直接用lookup方法实现更高性能的取值:

df['C'] = matrix_df.lookup(df['A'], df['B'])

新版本pandas中可以用下面的写法替代lookup,性能远高于apply:

df['C'] = matrix_df.reindex(df['A'])[df['B']].to_numpy().diagonal()

两种方案最终输出的结果都和预期效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:27:03