如何在python(pandas)中创建数据透视表

时间:2017-08-30 19:07:10

标签: python python-2.7 pandas

我有一张这样的表:

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().

我的错误是"属性错误:'功能'对象没有属性'表示'"。我知道map.mean函数中的用法不正确。你能帮我解决一下这个问题吗?谢谢。

1 个答案:

答案 0 :(得分:4)

阐述评论,几乎没有类似的方式

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