我有一个名为df的Pandas 数据帧,看起来像这样

name   test_type   test_number   correct
joe    0           1             1
joe    0           2             0
joe    1           1             0
joe    1           2             1
joe    0           1             1
joe    0           2             1
jim    1           1             0
jim    1           2             1
jim    0           1             0
jim    0           2             1
jim    1           1             0
jim    1           2             0

我想要一个按name分组的数据集,并提取correct×test_type的平均值(作为单个值)以及correct by test_typetest_number的平均值(作为numpy数组).

以下是我需要的:

name    correct_0    correct_1    correct_0_by_tn    correct_val_1_by_tn
joe     0.75         0.5          [1, 0.5]           [0, 1]
jim     0.5          0.25         [0, 1]             [0, 0.5]

我一直在使用df.groupby(["name", "test_type"]).correct.mean().reset_index()df.groupby(["name", "test_type", "test_number"]).correct.mean().reset_index(),但我无法1)像我想要的那样提取test_number的平均值作为一个数组,2)在一个连贯的数据帧中组织输出.

提前谢谢.

推荐答案

IIUC,您可以使用:

A = df.groupby(['name', 'test_type'], sort=False)['correct'].mean().unstack()

B = (df
   .groupby(['name', 'test_type', 'test_number'])['correct'].mean()
   .unstack().agg(list, axis=1).unstack()
)

out = A.join(B.add_suffix('_by_tn')).add_prefix('correct_')

输出:

test_type  correct_0  correct_1 correct_0_by_tn correct_1_by_tn
name                                                           
joe             0.75       0.50      [1.0, 0.5]      [0.0, 1.0]
jim             0.50       0.25      [0.0, 1.0]      [0.0, 0.5]

Alternative 输出:

out = (A
  .join(B.add_suffix('_by_tn'))
  .add_prefix('correct_')
  .rename_axis(columns=None)
  .reset_index()
)

输出:

  name  correct_0  correct_1 correct_0_by_tn correct_1_by_tn
0  joe       0.75       0.50      [1.0, 0.5]      [0.0, 1.0]
1  jim       0.50       0.25      [0.0, 1.0]      [0.0, 0.5]

Python相关问答推荐

将每个关键字值对转换为pyspark中的Intramame列

重命名变量并使用载体中的字符串存储 Select 该变量

如何以实现以下所述的预期行为的方式添加两只Pandas pyramme

Python中的锁定类和线程以实现dict移动

为什么我的(工作)代码(生成交互式情节)在将其放入函数中时不再工作?

除了Python之外,可以替代bare?

在两极中实施频率编码

仅对matplotlib的条标签中的一个条标签应用不同的格式

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

如何使用没有Selenium的Python在百思买着陆页面上处理国家/地区 Select ?

LAB中的增强数组

Pandas 填充条件是另一列

如何自动抓取以下CSV

将jit与numpy linSpace函数一起使用时出错

如何使用html从excel中提取条件格式规则列表?

如何列举Pandigital Prime Set

如何将多进程池声明为变量并将其导入到另一个Python文件

在含噪声的3D点网格中识别4连通点模式

名为__main__. py的Python模块在导入时不运行'

Pandas Data Wrangling/Dataframe Assignment