Python Pandas Dataframe:在不断增加的列数上循环并计算平均值和标准值
基本上,我有一个包含20个属性和一个值的表。我想找到std=0时所需的最低属性数(即粒度级别完美到允许1:1) 我想设置一个循环,如果使用列名进行硬编码,它将如下所示:Python Pandas Dataframe:在不断增加的列数上循环并计算平均值和标准值,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,基本上,我有一个包含20个属性和一个值的表。我想找到std=0时所需的最低属性数(即粒度级别完美到允许1:1) 我想设置一个循环,如果使用列名进行硬编码,它将如下所示: for iter in range(1,21): dfcalc = df.groupby("LINE_NUM")["RATIO"].agg([np.mean, np.std]) dfcalc = df.groupby("LINE_NUM","TYPE")["RATIO"].agg([np.mean, np.std])
for iter in range(1,21):
dfcalc = df.groupby("LINE_NUM")["RATIO"].agg([np.mean, np.std])
dfcalc = df.groupby("LINE_NUM","TYPE")["RATIO"].agg([np.mean, np.std])
如何使用循环中的iter变量定义我要分组的列?如果我正确理解您的要求,您可以这样做:
for i in range(1, len(df.columns) + 1):
df.groupby(df.columns[:i].tolist()).agg([np.mean, np.std])
(iter
是内置函数的名称)
您也可以使用
.iloc
进行。如果我正确理解您的需求,您可以执行以下操作:
for i in range(1, len(df.columns) + 1):
df.groupby(df.columns[:i].tolist()).agg([np.mean, np.std])
(iter
是内置函数的名称)
您也可以使用
.iloc
进行。我得到“ValueError:gropper和axis必须具有相同的长度”。另外,它不需要指定它应该表示的列和std:import pandas as pd,numpy as np df=pd.DataFrame(np.array(['A','A','C',7],'W','C','D',8],'W','A','C',9]),columns=['att1','att2','att3','ratio'])范围(1,len df columns)+1):df groupby(df columns[:i]).agg([np mean,np std])我得到“ValueError:Grouper和axis必须具有相同的长度”。另外,它不需要指定它应该表示的列以及std:import pandas as pd,numpy as np df=pd.DataFrame(np.array([[A','A','C',7','W','C','D',8','W','A','C',9]]),列=['att1,len df columns)+1:df groupby范围内i的[att1','att2','att3','ratio'])(df.列[:i]).agg([np.平均值,np.标准])