比方說,我有兩個簡單的數據幀:GROUPBY從另一列(同#行)數據幀
x1 = pd.DataFrame({'a':[1,2,3,4],
'b':[10,10,20,20],
'c':['z','z','z','o']})
x2 = pd.DataFrame({'e':['foo', 'bar', 'foo', 'foo'],
'f':['baz', 'blah', 'baz', 'blah']})
> x1
a b c
0 1 10 z
1 2 10 z
2 3 20 z
3 4 20 o
> x2
e f
0 foo baz
1 bar blah
2 foo baz
3 foo blah
我想一個函數應用於基於列在x2
的x1
組。
x1['avg'] = x1.groupby(x2[['e', 'f']])['a'].transform(np.mean)
*** ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
但我得到這個值的錯誤。
如果GROUPBY分從X1來(但我不希望有分配x2
列x1
,代碼整潔原因,我不會進入,不會發生錯誤。
x1.groupby(['b', 'c'])['a'].transform(np.mean)
0 1.5
1 1.5
2 3.0
3 4.0
這究竟是爲什麼/我能避開它?
有趣的,這不是@亞歷山大的解決方案在0.19.x下工作...也許是一個熊貓的錯誤,打破了這一點? – Kartik
@Kartik在0.19.1中適合我! (亞歷山大沒有,但也許這是一個python 3的問題...我得到一個不可調用的zip,或者如果我把它作爲列表'GroupByError:len(index)!= len(labels)',如我之前所述) –
是的,這是一個0.19.0的具體問題。我以爲我已經更新了我的env,但是不會。 [這是問題](http://stackoverflow.com/q/40986701/3765319)我問,然後投票結束。 – Kartik