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

如何按ID分组的位置顺序将pandas DataFrame与另一DataFrame对应相乘?

解决方案

可以通过以下步骤实现需求:

  1. 为每个ID分组添加组内序号:使用groupby('id').cumcount()为每个ID分组内的元素生成从0开始的连续序号,这个序号对应df2中元素的位置索引。
  2. 提取df2的数值数组:将df2的单列数据转换为一维数组,方便按索引直接取值。
  3. 对应位置相乘:将df1的value列与df2中对应序号的元素相乘,得到最终结果。

完整代码示例

import pandas as pd

df1 = pd.DataFrame([[1, 1],
                    [2, 1],
                    [3, 1],
                    [2, 1],
                    [2, 2],
                    [3, 2],
                    [5, 3]], columns=['value', 'id'])
df2 = pd.DataFrame([1, 2, 3, 4])

# 生成每个ID分组内的元素序号
df1['group_idx'] = df1.groupby('id').cumcount()
# 提取df2的数值数组
df2_vals = df2.iloc[:, 0].values
# 执行对应位置的乘法运算
result = df1['value'] * df2_vals[df1['group_idx']]

# 按需求格式输出结果
print(result.to_string(index=False))

运行结果

1
4
9
8
2
6
5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:43:10