将多行合并到pandas数据框中具有相同ID的单行

问题描述 投票:0回答:1

我有以下数据框

ID     Qnt  Rec value
AB1234  20   1   2
xy123   30   1   5
xy123   30   2   2

我正在寻找如下所示的输出。

我需要按 ID 进行分组,当我具有相同的 ID 时,我应该将它们放在同一行中,并乘以 Rec 和 Value 列。 例如。对于 ID xy123

30*1*5*2*2 = 600

ID     Qnt  output
AB1234  20   40
xy123   30   600

我的方法是将给定的数据帧拆分为 Rec 1 和 Rec 2,然后合并这两个数据帧。我正在寻找其他可行的方法。

python pandas dataframe numpy dataset
1个回答
0
投票

代码

out = (df['Rec'].mul(df['value']).groupby([df['ID'], df['Qnt']]).prod()
                .reset_index(name='output')
                .assign(output=lambda x: x['Qnt'].mul(x['output'])))

       ID  Qnt  output
0  AB1234   20      40
1   xy123   30     600

示例代码

import pandas as pd
data1 = {'ID': ['AB1234', 'xy123', 'xy123'], 'Qnt': [20, 30, 30], 
         'Rec': [1, 1, 2], 'value': [2, 5, 2]}
df = pd.DataFrame(data1)
© www.soinside.com 2019 - 2024. All rights reserved.