2016-12-05 49 views
2

我已經獲得了來自不同天氣機構的一些天氣數據,並且我正在計算Pandas中的讀數。我需要:在同一個標​​籤/城市大熊貓統計每個索引的唯一值並將唯一行變爲總計列

  1. 刪除重複的讀數
  2. 創建獨特的讀數數量
  3. 創建包含的(唯一的)讀數計每個機構新列的新列該指數

當前數據結構:

City   Reading Agency 
NEW YORK  80  US 
NEW YORK  142  GB 
NEW YORK  200  GB 
NEW YORK  80  US 
TORONTO  96  US 
TORONTO  79  US 
TORONTO  83  US 
TORONTO  73  GB 
TORONTO  67  US 
TORONTO  67  US 

所需的輸出:

City   Total US GB 
NEW YORK   3 1  2 
TORONTO   5 4  1 

我已經找到了一些方法來做到這一點,但它們令人難以置信的混亂。如果有人有一個優雅的解決方案,我會非常感激。

謝謝。

回答

1

您可以使用groupby與聚集nunique,然後通過unstack和最後insert新列Total通過sum重塑:

df = df.groupby(['City','Agency'])['Reading'].nunique().unstack(fill_value=0) 
df.insert(0, 'Total', df.sum(axis=1)) 
print (df) 
Agency Total GB US 
City     
NEW YORK  3 2 1 
TORONTO  5 1 4 
+0

真棒,謝謝。那很完美。比我提出的要好10倍。 – Shanks

+0

超級,順便說一句,我第一次使用'插入'功能。 – jezrael

+0

當我在我的完整數據集上使用它時,我得到KeyError:'城市',它絕對是正確的關鍵... – Shanks

相關問題