计算多指数对象熊猫的每组



我想为分组对象的每一组计算一个值,但对组的每一行重复该值。 Pandas数据帧组中的计算 尽管标题似乎是我需要的,但这不起作用。 我看不出公式是否有问题。它应该是Excel词汇中的一种总和。

dat = pd.DataFrame({'Supplier': ['A', 'A', 'A', 'B','B'], 'Id': ['1','2','3','4','5'], 'a': [2,2,2,2,2], 'AVG' :[5,6,7,8,3], 'BP': [3,4,5,6,3], 'Hc': [0.15,0.15,0.15,0.15,0.15]})
dat = dat.groupby(['Supplier', 'Id'])['a','AVG', 'BP','Hc'].sum()

for supplier in dat.index[0]:
dat['s'] = np.sqrt((2 * (dat['a'])/ (
((dat['AVG'] * dat['BP'] * (dat['Hc']/4)).sum()))))

我得到的结果是这样的:

a  AVG  BP    Hc         s
Supplier Id                            
A        1   2    5   3  0.15  0.902358
2   2    6   4  0.15  0.902358
3   2    7   5  0.15  0.902358
B        4   2    8   6  0.15  0.902358
5   2    3   3  0.15  0.902358

但我想得到这样的东西:

a  AVG  BP    Hc         s
Supplier Id                            
A        1   2    5   3  0.15  x
2   2    6   4  0.15  x
3   2    7   5  0.15  x
B        4   2    8   6  0.15  y
5   2    3   3  0.15  y

这里的 x 和 y 只是为了表明每个"组"的数字应该不同

你可以试试这个:

groupby.apply函数使您可以访问每个组(供应商(数据帧。

def cal_func(df):
df['s'] = np.sqrt((2 * (df['a'])/ (
((df['AVG'] * df['BP'] * (df['Hc']/4)).sum()))))
return df
dat_new = dat.groupby(['Supplier']).apply(cal_func)
dat_new
Supplier Id  a  AVG  BP    Hc         s
0        A  1  2    5   3  0.15  1.200600
1        A  2  2    6   4  0.15  1.200600
2        A  3  2    7   5  0.15  1.200600
3        B  4  2    8   6  0.15  1.367971
4        B  5  2    3   3  0.15  1.367971
import pandas as pd
import numpy as np
dat = pd.DataFrame({'Supplier': ['A', 'A', 'A', 'B','B'], 'Id': ['1','2','3','4','5'], 'a': [2,2,2,2,2], 'AVG' :[5,6,7,8,3], 'BP': [3,4,5,6,3], 'Hc': [0.15,0.15,0.15,0.15,0.15]})
dat = dat.groupby(['Supplier', 'Id'])['a','AVG', 'BP','Hc'].sum()

dat['s'] = np.sqrt((2 * (dat['a']))/(dat['AVG']* dat['BP']* (dat['Hc']/4)).groupby(level=0).sum())
print(dat)

a  AVG  BP    Hc         s
Supplier Id                            
A        1   2    5   3  0.15  1.200600
2   2    6   4  0.15  1.200600
3   2    7   5  0.15  1.200600
B        4   2    8   6  0.15  1.367971
5   2    3   3  0.15  1.367971

最新更新