代码之家  ›  专栏  ›  技术社区  ›  jayko03

Python:如何使用迭代创建递增的多个变量

  •  0
  • jayko03  · 技术社区  · 6 年前

    我有数据帧,叫做 df

    Category    block   array_size  num_node    num_task    time
     DATA         2     100             1          1        0.104
     DATA         2     100             1          2        0.348
     DATA         2     100             1          1        2.837 
     DATA         2     1000            1          1        29.188
     DATA         2     1000            1          1       284.087
    

    有了这个数据帧,我想知道 mean
    所以我想要的变量是(dfţfoo{block}{arrayţsize}{numţtask}),

    df_foo_2_100_1 = df.loc[
        (df["num_task"] == 1) & 
        (df["block"] == 2) & 
        (df["array_size"] == 100)]["time"].mean()
    df_foo_2_1000_1 = df.loc[
            (df["num_task"] == 1) & 
            (df["block"] == 2) & 
            (df["array_size"] == 1000)]["time"].mean()
    

    如何使用循环自动创建这些变量?

    1 回复  |  直到 6 年前
        1
  •  2
  •   BENY    6 年前

    groupby

    df.loc[(df["num_task"] == 1) & (df["block"] == 2)].groupby('array_size').time.mean()
    Out[206]: 
    array_size
    100       1.4705
    1000    156.6375
    Name: time, dtype: float64
    

    看来你需要

    df.groupby(['num_task','block','array_size']).time.mean()
    Out[208]: 
    num_task  block  array_size
    1         2      100             1.4705
                     1000          156.6375
    2         2      100             0.3480
    Name: time, dtype: float64