我正在阅读用于数据分析的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。
答案 0 :(得分:0)
更新我的pandas版本解决了这个问题。它可能是以前版本中的一个错误。但不确定。