【问题标题】:Applying function to Pandas with GroupBy along direction of the grouping variable沿分组变量的方向使用 GroupBy 将函数应用于 Pandas
【发布时间】:2017-07-06 08:38:25
【问题描述】:

我有一个由 N 人组成的队列,我计算了一些数量的相关矩阵(q1_score,...q5_score)

    df.groupby('participant_id').corr()
    Out[130]: 
                                q1_score    q2_score   q3_score  q4_score   q5_score
    participant_id                                                                      
    11.0           q1_score     1.000000   -0.748887  -0.546893  -0.213635  -0.231169
                   q2_score    -0.748887    1.000000   0.639649   0.324976   0.335596
                   q3_score    -0.546893    0.639649   1.000000   0.154539   0.151233
                   q4_score    -0.213635    0.324976   0.154539   1.000000   0.998752              
                   q5_score    -0.231169    0.335596   0.151233   0.998752   1.000000
    14.0           q1_score     1.000000   -0.668781  -0.124614  -0.352075  -0.244251
                   q2_score    -0.668781    1.000000  -0.175432   0.360183   0.184585
                   q3_score    -0.124614   -0.175432   1.000000  -0.137993  -0.125115
                   q4_score    -0.352075    0.360183  -0.137993   1.000000   0.968564
                   q5_score    -0.244251    0.184585  -0.125115   0.968564   1.000000
    17.0           q1_score     1.000000   -0.799223  -0.814424  -0.790587  -0.777318
                   q2_score    -0.799223    1.000000   0.787238   0.658524   0.640786
                   q3_score    -0.814424    0.787238   1.000000   0.702570   0.701440
                   q4_score    -0.790587    0.658524   0.702570   1.000000   0.998996
                   q5_score    -0.777318    0.640786   0.701440   0.998996   1.000000
    18.0           q1_score     1.000000   -0.595545  -0.617691  -0.472409  -0.477523
                   q2_score    -0.595545    1.000000   0.386705   0.148761   0.115068
                   q3_score    -0.617691    0.386705   1.000000   0.806637   0.782345
                   q4_score    -0.472409    0.148761   0.806637   1.000000   0.982617
                   q5_score    -0.477523    0.115068   0.782345   0.982617   1.000000

我需要计算所有参与者的相关性的中值吗?我的意思是:我需要接受更正。在所有参与者的项目 J 和项目 K 之间找到它们的中值。

我确定这是一行代码,但我很难实现(仍在通过示例学习 pandas)。

【问题讨论】:

    标签: pandas grouping


    【解决方案1】:

    堆叠你的数据,然后再做一次分组:

    df.groupby('participant_id').corr().stack().groupby(level = [1,2]).median()
    

    编辑:实际上,如果您不想堆叠,则不需要:

    df.groupby('participant_id').corr().groupby(level = [1]).median()
    

    也可以。

    【讨论】:

      【解决方案2】:

      IIUC,您需要每个参与者在所有问题中的平均平均值:

      df.where(df != 1).mean(axis=1).mean(level=0)
      

      让我们摆脱与where 相同问题的相关性,然后通过方向为axis=1 的participant_id 获得所有问题的均值,然后获得participant_id 均值level=0

      输出:

      participant_id
      11.0    0.086416
      14.0   -0.031493
      17.0    0.130800
      18.0    0.105896
      dtype: float64
      

      编辑:我使用均值而不是中位数,我们可以对中位数执行相同的逻辑。

      df.where(df != 1).median(axis=1).median(level=0)
      

      【讨论】:

      • 谢谢,但它对我不起作用。我无法重现您的结果,where(df != 1) 有问题
      猜你喜欢
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多