意外行为pandas groupby转换

时间:2014-10-26 14:24:47

标签: python python-2.7 pandas

我正在阅读用于数据分析的Python'本书和我正在研究一个例子,如下面的原型。

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'a' : [1,2, 3], 'b' : [3,4,6]}, index=['AA', 'BB', 'CC'])

In [313]: df1
Out[313]: 
    a  b
AA  1  3
BB  2  4
CC  3  6

In [314]: df1.groupby(['one', 'two', 'one']).mean()
Out[314]: 
     a    b
one  2  4.5
two  2  4.0

现在,当我在transform(np.mean)上使用DataFrame时,我得到了:

In [315]: df1.groupby(['one', 'two', 'one']).transform(np.mean)
Out[315]: 
      a    b
AA  NaN  NaN
BB  NaN  NaN
CC  NaN  NaN
one   2  4.5
two   2  4.0

根据书籍和文档,我应该

      a    b
AA    2  4.5
BB    2  4.0
CC    2  4.5

有人可以解释我做错了什么,或者pandas transform

的行为发生了变化

对于拥有该书的人的参考,类似的例子在第265页,Python for Data Analysis" (http://www.amazon.com/Python-Data-Analysis-Wrangling-IPython/dp/1449319793/ref=sr_1_1?ie=UTF8&qid=1414333292&sr=8-1&keywords=python+for+data+analysis

编辑:

这是本书中的实际例子。

people = pd.DataFrame(np.random.randn(5,5), columns=list('abcde'), index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis'])

people.ix[2:3, ['b', 'c']] = np.nan

key = ['one', 'two', 'one', 'two', 'one']

people.groupby(key).transform(np.mean)

这应该在index = ['Joe', 'Steve', 'Wes', 'Jim', 'Travis']columns = list("abcde")

的数据框中按键显示平均值 我得到了。

               a         b         c         d         e
Jim          NaN       NaN       NaN       NaN       NaN
Joe          NaN       NaN       NaN       NaN       NaN
Steve        NaN       NaN       NaN       NaN       NaN
Travis       NaN       NaN       NaN       NaN       NaN
Wes          NaN       NaN       NaN       NaN       NaN
one     0.115921  0.269327 -0.812230  0.901449  0.100471
two    -1.371846 -0.918605 -0.391085 -0.425853  0.436742

我实际上正在使用pandas版本0.14.1。

1 个答案:

答案 0 :(得分:0)

更新我的pandas版本解决了这个问题。它可能是以前版本中的一个错误。但不确定。