我有三列关于熊猫的df
:id, hazard, probability
我想确定每个id的概率之和,危险组合是1
所以我想找出每个id的概率之和hazard
还可以找到每个id、危害的最大概率指数,并将该值加上1-和
我在stack overflow中找到了如何分别处理这两个问题,但找不到将它们结合起来的方法
查找每组最大值的索引:
i = df.groupby(['id','haz'])['prob'].transform('idxmax').values
查找每个组的概率总和:
sums= df.groupby(['id','haz'])['prob'].sum()
我如何将这两者结合起来,以确保每组的概率之和正好为1
到目前为止,我的代码和下面的示例df
import pandas as pd
import numpy as np
File = 'testprob1.csv'
VF = pd.read_csv(f'{File}', sep=',', header=0, index_col=False, dtype='str')
VF = VF.astype({'id': 'str', 'haz': 'int16', 'prob': 'float64'})
i = VF.groupby(['id','haz'])['prob'].transform('idxmax').values
sums= VF.groupby(['id','haz'])['prob'].sum()
编辑: 示例df
试试这个-
new_proba
计算每个组需要替换其最大值的新概率值李>idxmax
查找行索引,使用df.loc
查找这些行并使用new_proba
更新它们替代方法
对于自定义重缩放函数,您可以编写自己的函数并将其应用于每个组。然后以列表的形式返回新的概率,一旦传递到
pd.Series
中,它就会像使用.transform
时一样分布仅确认每组的金额为1-
相关问题 更多 >
编程相关推荐