我從一個很大的數據框開始。我削減並重新排列了一些列。最後一個(相當大的)數據幀我救的頭是這樣的:groupby語句是否導致數據框崩潰到系列?
# bsa_mod = 'best supporting actress modified' dataframe
[1] bsa_mod = bsa_mod[['Year', 'Name', 'Winner']]
[2] bsa_mod.head()
Year Name Winner
431 1936 Beulah Bondi 0.0
432 1936 Alice Brady 0.0
433 1936 Bonita Granville 0.0
434 1936 Maria Ouspenskaya 0.0
435 1936 Gale Sondergaard 1.0
我需要把所有的名字一起算上虛擬變量旁邊的每個。例如,Agnes Morehead出現在Name列中4次,每次在她名字旁邊都有一個0或1,所以最後的總結表應該說'Agnes Morehead 4'。我得到了下列要求:
# aggregate nominations by actress
bsa_mod_count = bsa_mod.groupby('Name').Winner.count()
Name
Abigail Breslin 1
Adriana Barraza 1
Agnes Moorehead 4
Alfre Woodard 1
Alice Brady 2
Name: Winner, dtype: int64
我跑這個.describe()來獲取摘要統計,發現計算的最大值爲6
我想找出誰該神祕人是通過運行這樣:
most_nominations = bsa_mod_count[bsa_mod_count.Winner == 6]
出乎我的意料,我得到一個屬性錯誤,指出「勝者」並不存在,這與我現在正在處理的數據類型是一系列並不再是一個數據幀。
在'groupby'之後數據框會退化爲一系列嗎?我並不指望我的索引被覆蓋,這在我運行.agg(['count'])時似乎也會發生。有沒有另外一種方法可以做到這一點,以保存我的數據框並呈現'6'可用?
這是一個非常性感的lambda函數。我一定會玩它。非常感激! – Ryan
我想接受你的回答。如果你不介意我問,你的方式如何保留索引,而另一種方式卻不行?我該如何解讀[x.Name]? – Ryan
因爲當您執行groupby時,您正在執行聚合操作,這可能會減少記錄數。例如,如果您有多個'Alice Brady',在groupby之後,'Alice Brady'將只有一條記錄。由於有多個索引,因此使用原始索引會很模糊。雖然在我的解決方案中,我根本沒有做羣組。 apply函數將僅查找當前行中的名稱計數。 – Allen