Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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 简化pandas中的求和计算(西格玛符号)_Python_Pandas - Fatal编程技术网

Python 简化pandas中的求和计算(西格玛符号)

Python 简化pandas中的求和计算(西格玛符号),python,pandas,Python,Pandas,我需要计算每个组的百分比(从A到G),并使用六个不同的列除以相同的列(如G代表总数)。然后我需要计算一个叫做。我的等式在sigma符号前面有一个“1-”。因此,我需要将这些列平方,然后将它们相加,然后使用1减去加法。我需要在我的数据框中保留这些百分比列。请帮助我简化以下代码: df = pd.DataFrame(np.random.randn(20, 7), columns=list("ABCDEFG")) #percentage df["pct_A"] = df_ra

我需要计算每个组的百分比(从A到G),并使用六个不同的列除以相同的列(如G代表总数)。然后我需要计算一个叫做。我的等式在sigma符号前面有一个“1-”。因此,我需要将这些列平方,然后将它们相加,然后使用1减去加法。我需要在我的数据框中保留这些百分比列。请帮助我简化以下代码:

  df = pd.DataFrame(np.random.randn(20, 7), columns=list("ABCDEFG"))

  #percentage
        df["pct_A"] = df_race.A / df_race.G
        df["pct_B"] = df_race.B / df_race.G
        df["pct_C"] = df_race.C / df_race.G
        df["pct_D"] = df_race.D / df_race.G
        df["pct_E"] = df_race.E / df_race.G
        df["pct_F"] = df_race.F / df_race.G

    #HHI Index
        df["hhi"] = 1-(df.pct_A**2 + df.pct_B**2 + df.pct_C**2 + 
                       df.pct_D**2 + df.pct_E**2 + df.pct_F**2)

我想这会有帮助的
我正在创建一个带有7列随机值的df,将前6列除以第7列,然后使用辅助函数计算calculate_hhi

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(20, 7), columns=list('ABCDEFG'))

def calculate_hhi(row):
    hhi = 1 - (row['A']**2 + row['B']**2 + row['C']**2 + row['D']**2 + row['E']**2 + row['F']**2 )
    return hhi 

df.iloc[:, 0:6] = df.iloc[:, 0:6].apply(lambda x: x/df.G, axis=0)
df['hhi'] = df.apply(calculate_hhi, axis=1)

我想这会有帮助的
我正在创建一个带有7列随机值的df,将前6列除以第7列,然后使用辅助函数计算calculate_hhi

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(20, 7), columns=list('ABCDEFG'))

def calculate_hhi(row):
    hhi = 1 - (row['A']**2 + row['B']**2 + row['C']**2 + row['D']**2 + row['E']**2 + row['F']**2 )
    return hhi 

df.iloc[:, 0:6] = df.iloc[:, 0:6].apply(lambda x: x/df.G, axis=0)
df['hhi'] = df.apply(calculate_hhi, axis=1)
我实际使用的是(我的数据集包含缺少的值):

我实际使用的是(我的数据集包含缺少的值):


非常感谢。它可以工作,但列的名称保持不变。有没有什么我可以添加到lambda部分来将名称“race_uu”更改为“pct_u”我添加df_race.columns=df_race.columns.str.replace(“race”,“pct”)通过
df.columns
然后
df.columns=['pct_white',pct_black']
给出所有列名,并更改要在新列名分配中重命名的名称。在您创建的示例中,如果我使用
df.iloc[:,0:7]。应用(lambda x:x**2,axis=1)
。这将使每一列都成正方形。我还可以在lambda中放入什么,让它在平方后返回前7列(axis=1)的总和,并将这些值指定给我的第8列?您可以这样做来添加列并将其存储到另一列
col_list=['A','B','C']
然后
df['E']=df[col_list].sum(axis=1)
或者您可以只写
df.iloc[:,0:7]。应用(lambda x:x**2,axis=1)。sum(axis=1)
,然后将其存储到某个列中谢谢!它可以工作,但列的名称保持不变。有没有什么我可以添加到lambda部分来将名称“race_uu”更改为“pct_u”我添加df_race.columns=df_race.columns.str.replace(“race”,“pct”)通过
df.columns
然后
df.columns=['pct_white',pct_black']
给出所有列名,并更改要在新列名分配中重命名的名称。在您创建的示例中,如果我使用
df.iloc[:,0:7]。应用(lambda x:x**2,axis=1)
。这将使每一列都成正方形。我还可以在lambda中放入什么,让它在平方后返回前7列(axis=1)的总和,并将这些值指定给我的第8列?您可以这样做来添加列并将其存储到另一列
col_list=['A','B','C']
然后
df['E']=df[col_list].sum(axis=1)
或者您可以只写
df.iloc[:,0:7]。应用(lambda x:x**2,axis=1)。sum(axis=1)
,但随后将其存储到某个列中
df.iloc[:, 0:6] = df.iloc[:, 0:6].apply(lambda x: x/df.G)
df["hhi"] = 1 - df.iloc[:, 0:6].apply(lambda x: x**2).sum(skipna=False, axis=1)