Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫将行复制到具有权重的唯一行_Python_Pandas_Duplicates_Row_Rules - Fatal编程技术网

Python 熊猫将行复制到具有权重的唯一行

Python 熊猫将行复制到具有权重的唯一行,python,pandas,duplicates,row,rules,Python,Pandas,Duplicates,Row,Rules,我试图在一个数据帧中合并行,其中一个ID有不同的输入,所以我希望每个ID都有一行,每个ID都有一个权重 我的数据框如下所示: 我需要它将ID=2的A,B列合并成一个加权平均值(A为0.3*0.35+0.6*0.55,B为3*0.35+5*0.55)。对于C列,我需要选择与最高权重相关的值(对于ID=2,C=C),d列为最大值(在本例中为d=3),最终权重为所有权重之和(0.35+0.55)。基本上,我需要为重复ID的每一行分配几个不同的规则,但我还没有找到如何做到这一点 我正在使用python

我试图在一个数据帧中合并行,其中一个ID有不同的输入,所以我希望每个ID都有一行,每个ID都有一个权重

我的数据框如下所示:


我需要它将ID=2的A,B列合并成一个加权平均值(A为0.3*0.35+0.6*0.55,B为3*0.35+5*0.55)。对于C列,我需要选择与最高权重相关的值(对于ID=2,C=C),d列为最大值(在本例中为d=3),最终权重为所有权重之和(0.35+0.55)。基本上,我需要为重复ID的每一行分配几个不同的规则,但我还没有找到如何做到这一点

我正在使用python,我相信熊猫是最好的,但我只是一个初学者,所以我会听你的建议,并尝试任何东西

非常感谢

import pandas as pd       
a = pd.read_clipboard()

def agg_func(x):
    x.A = x.A*x.weight
    x.B = x.B*x.weight    
    return pd.Series([x.A.sum(), x.B.sum(), x.C[x.weight.idxmax()], x.D.max(), x.weight.max()], index=x.columns[1:])

print(a.groupby('ID').apply(agg_func))

        A    B  C  D  weight
ID
1   0.500  2.0  a  1    1.00
2   0.435  3.8  c  3    0.55
3   0.360  1.8  d  4    0.90
这应该做作业检查以了解更多信息

import pandas as pd       
a = pd.read_clipboard()

def agg_func(x):
    x.A = x.A*x.weight
    x.B = x.B*x.weight    
    return pd.Series([x.A.sum(), x.B.sum(), x.C[x.weight.idxmax()], x.D.max(), x.weight.max()], index=x.columns[1:])

print(a.groupby('ID').apply(agg_func))

        A    B  C  D  weight
ID
1   0.500  2.0  a  1    1.00
2   0.435  3.8  c  3    0.55
3   0.360  1.8  d  4    0.90