Pandas Dataframe:在越来越多的列上循环并计算均值和标准差

时间:2019-02-28 09:57:01

标签: 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])

如何在循环中使用iter变量来定义要分组的列?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的要求,则可以执行以下操作:

for i in range(1, len(df.columns) + 1):
    df.groupby(df.columns[:i].tolist()).agg([np.mean, np.std])

({iter是内置函数的名称)

对于integer-based indexing,您也可以使用.iloc