2016-11-21 69 views
1

我正在玩熊貓。 鑑於通過multiindex應用羣組聚合

day pokemon date cp 14 Abra 2016-11-14 14:08:37.205617 377 2016-11-14 22:47:02.467526 374 Bellsprout 2016-11-14 09:02:41.420506 460 2016-11-14 09:31:29.026961 541 2016-11-14 09:42:49.151360 125

我想添加一個新的科拉姆每個口袋妖怪值,其中組涉及CP意味着插入。 正如您可能認爲的那樣,這是一個multiIndex結構,其中(day,pokemon,date)是索引元組。

直到現在我試圖解決這個問題,這個合併數據框與由天和口袋妖怪分組和應用的平均操作獲得的一個。結果,我鬆了日期字段,我仍然無法合併它我上面發佈的一個。

我預期的結果會是這樣的:

day pokemon  date       cp mean 
14 Abra  2016-11-14 14:08:37.205617 377 
       2016-11-14 22:47:02.467526 374 375.5 
    Bellsprout 2016-11-14 09:02:41.420506 460 
       2016-11-14 09:31:29.026961 541 
       2016-11-14 09:42:49.151360 125 375.3 

你將如何解決這個問題? 謝謝,FB

回答

0

我想你需要transform先通過boolean indexingmask添加NaN通過顛倒duplicated

g = df.groupby(level=[0,1]) 
df['mean'] = g['cp'].transform('mean') 
df['mean'] = df['mean'][g['mean'].apply(lambda x: ~x.duplicated(keep='last'))] 
print (df) 
              cp  mean 
day pokemon date          
14 Abra  2016-11-14 14:08:37.205617 377   NaN 
       2016-11-14 22:47:02.467526 374 375.500000 
    Bellsprout 2016-11-14 09:02:41.420506 460   NaN 
       2016-11-14 09:31:29.026961 541   NaN 
       2016-11-14 09:42:49.151360 125 375.333333 
+0

那麼容易!我能爲每個組獲得一個價值嗎? – FrankBr

+0

是的,第二部分很難。 – jezrael