我有一张这样的桌子:

train_df:

Sex Target
M   1
M   1
M   1
F   0
F   1
F   0


我想创建一个数据透视图,以便它可以显示如下结果:

Row Labels  Average of Target
   F              0.333333333
   M                   1


我写了这样的代码:

temp2 = train_df.pivot_table(values='Target', index=['Sex'],aggfunc=lambda x: x.map.mean().


我被误认为是“ AttributeError:'函数'对象没有属性'均值'”。我知道map.mean函数中的用法不正确。您能帮我消除这个问题吗?谢谢。

最佳答案

详细阐述评论,并提供其他几种类似方法

In [325]: train_df.groupby('Sex', as_index=False).Target.mean()
Out[325]:
  Sex    Target
0   F  0.333333
1   M  1.000000

In [326]: train_df.groupby('Sex').Target.mean().reset_index()
Out[326]:
  Sex    Target
0   F  0.333333
1   M  1.000000

In [327]: train_df.groupby('Sex', as_index=False).agg({'Target': 'mean'})
Out[327]:
  Sex    Target
0   F  0.333333
1   M  1.000000

In [328]: train_df.groupby('Sex', as_index=False).agg({'Target': np.mean})
Out[328]:
  Sex    Target
0   F  0.333333
1   M  1.000000

In [329]: train_df.groupby('Sex', as_index=False).agg('mean')
Out[329]:
  Sex    Target
0   F  0.333333
1   M  1.000000


如果您坚持使用pivot_table

In [333]: train_df.pivot_table(index='Sex', values='Target', aggfunc='mean').reset_index()
Out[333]:
  Sex    Target
0   F  0.333333
1   M  1.000000

关于python - 如何在python(pandas)中创建数据透视表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45968048/

10-09 07:24