2017-02-22 67 views
1

我有一個看起來像這樣的數據框我已將我的大洲製作爲索引字段。我希望它表現出一點不同。我想獲得的數據框只是有3個大洲,然後讓所有的非洲大陸下屬於國家,顯示了作爲計數將計算列分組並添加到我的數據框中

Continent Country  

Oceania Australia 53  154.3 203.6 209.9 
Europe Austria 28.2 49.3 59.7 59.9 
Europe Belgium 33.2 70.3 83.4 82.8 
Europe Denmark 18.6 26.0 38.9 36.1 
Asia  Japan  382.9 835.5 1028.1 1049.0 

所以我的輸出看起來像這樣的:它會只顯示該大陸下的國家數量。我也想它,當它結合到一切NUM_COUNTRIES,它給所有的平均值爲國家,所以它的所有集於一身每個大洲

Continent num_Countries  mean 

Oceania  1    209.9 
Europe  3    328.2 
Asia   1    382.9 

我試圖創建這些列,但我可以得到創建新列,當我做他們作爲南值和大洲時,我不能讓groupby()函數以我想要的方式工作,因爲它不會將所有國家捲入它所顯示的大陸大洲和國家的完整列表。

回答

0

您可以爲此使用數據透視表。通過「大陸」(I標記的未標記的列1至4)

df.pivot_table(index="Continent", values=["Country", "1"], 
       aggfunc=('count', 'mean')) 
0

以下組,並應用統計的國家數量和發現手段的平均值(我認爲這是一個功能就是你,因爲想要的東西每個大陸有多個國家的4列數字數據)。

def f(group): 
    return pd.DataFrame([{'num_Countries': group.Country.count(), 
          'mean': group.mean().mean()}]) 
grouped = df.groupby('Continent') 
result = grouped.apply(f).reset_index(level=1, drop=True) 
+0

是的,這工作謝謝! – Cannon

相關問題