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

如何用Pandas实现两个DataFrame的特定乘法生成新DataFrame?

解决方法

你要的是把df1的val和df2每个年份对应的val做乘积生成新的年份列,直接用Pandas的广播特性就能搞定,不用转矩阵,步骤如下:

  1. 先把df2转成以年份为索引的Series,方便后续匹配:
yr_vals = df2.set_index('yr')['val']
  1. 用df1的val和这个Series做乘法,Pandas会自动广播,生成包含所有年份列的DataFrame:
year_cols = df1['val'].mul(yr_vals)
  1. 最后把这个年份列的DataFrame和原df1拼接起来,就是目标结果:
df = pd.concat([df1, year_cols], axis=1)

完整代码示例:

import pandas as pd

# 初始化df1和df2
df1 = pd.DataFrame({'id':['a','b','c'], 'val':[1,2,3]})
df2 = pd.DataFrame({'yr':['2010','2011','2012'], 'val':[4,5,6]})

# 生成年份列
yr_vals = df2.set_index('yr')['val']
year_cols = df1['val'].mul(yr_vals)

# 拼接得到目标df
df = pd.concat([df1, year_cols], axis=1)
print(df)

运行后输出就是你要的结果:

id  val  2010  2011  2012
0  a    1     4     5     6
1  b    2     8    10    12
2  c    3    12    15    18

这个方法完全用Pandas原生操作实现,比转矩阵更简洁,也更贴合Pandas的使用习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:24:17