Python 从最大和创建变量
我试图创建一个基于组和组最大和的变量 变量的函数如下所示:Python 从最大和创建变量,python,pandas,dataframe,group-by,pandas-groupby,Python,Pandas,Dataframe,Group By,Pandas Groupby,我试图创建一个基于组和组最大和的变量 变量的函数如下所示: new_var = ((((.78 * group_sum) - ((sum of 2 largest values of SHOW column in group)+value of row))/(value of SHOW column in row))/3)+1 以下是我尝试过的示例df和代码: test_data = {'group': [1,1,1,1,1,2,2,2,2,2], 'SHOW':[100,100,300,40
new_var = ((((.78 * group_sum) - ((sum of 2 largest values of SHOW column in group)+value of row))/(value of SHOW column in row))/3)+1
以下是我尝试过的示例df和代码:
test_data = {'group': [1,1,1,1,1,2,2,2,2,2], 'SHOW':[100,100,300,400,100,100,100,400,500,200]}
df = pd.DataFrame(data = test_data)
df['new_var'] = ((((.78 * df.groupby('group')['SHOW'].transform(sum)) - (df.groupby('group')['SHOW'].apply(lambda grp: grp.nlargest(2).sum())+df['SHOW']))/df['SHOW'])/3)+1
df['new_var'] = ((((.78 * df.groupby('group')['SHOW'].transform(sum)) - (df.groupby('group')['SHOW'].nlargest(2).sum(axis = 0)+df['SHOW']))/df['SHOW'])/3)+1
我尝试的第一个代码返回了新变量的所有NaN,第二个代码返回了不正确的值。您能将预期的正确值添加到您的问题中吗?尝试:
grp = df.groupby('group')['SHOW']
df['new_var'] = ((((.78 * grp.transform('sum')) - ((grp.transform(lambda x: x.iloc[:2].sum()))+df['SHOW']))/(df['SHOW']))/3)+1
输出:
group SHOW new_var
0 1 100 2.600000
1 1 100 2.600000
2 1 300 1.311111
3 1 400 1.150000
4 1 100 2.600000
5 2 100 3.380000
6 2 100 3.380000
7 2 400 1.345000
8 2 500 1.209333
9 2 200 2.023333
正确的值是什么?因此,我们可以验证代码。