簡體   English   中英

pandas pivot 表問題 - 假設我是如何構建它的?

[英]pandas pivot table issue - assuming it is how i am structuring it?

我有一個包含視頻游戲平台的數據集,以及為其發布游戲的年份。

我想要做的是最終得到一個 dataframe ,其中包含平台每年發布的標題數量。

我最初的 dataframe 看起來像這樣:

platform    year
0   Wii     2006.0
1   NES     1985.0
2   Wii     2008.0
3   Wii     2009.0
4   GB      1996.0
5   GB      1989.0
6   DS      2006.0
7   Wii     2006.0
8   Wii     2009.0
9   NES     1984.0
10  DS      2005.0
11  DS      2005.0
12  GB      1999.0
13  Wii     2007.0
14  X360    2010.0
15  Wii     2009.0
16  PS3     2013.0
17  PS2     2004.0
18  SNES    1990.0
19  DS      2005.0

我正在使用 groupby 將它們放在一起:

df = df.sort_values(['year']).groupby(['year'])['platform'].value_counts()

這讓我很接近:

year           platform
1980.0           2600         9
1981.0           2600        46
1982.0           2600        36
1983.0           2600        11
                 NES          6
1984.0           NES         13
                 2600         1
1985.0           NES         11
                 2600         1
                 DS           1

但這是一個系列,以年份為索引,我無法將其粘貼到熱圖之類的東西中。

這是所需 output 的示例:

   year platform  #_titles
1980    2600        9
1981    2600        46
1982    2600        36
1983    2600        11
1983    NES         6
1984    NES         13
1984    2600        1
1985    NES         11
1985    2600        1
1985    DS          1
1985    PC          1
1986    NES         19
1986    2600        2
1987    NES         10
1987    2600        6
1988    NES         11
1988    2600        2
1988    GB          1
1988    PC          1
1989    GB          10

我在想我可能需要使用 pivot_table() ,但這是我仍然很陌生並且正在努力實現的東西。

我試過類似的東西:

df = df.pivot_table(df,index='year',columns = 'platform',aggfunc = 'count') 

但我的 output 那時只是一年。

顯然我做錯了什么,並且認為是時候停止在 juypter 筆記本上敲打我的虛擬頭並尋求一些建議。

我可以讓原始組方法正常工作,或者以任何一種方式使用 pivot 表 - 我只是希望能得到一些關於我做錯了什么的指示,以便我可以糾正它。

提前感謝您的時間,

傑瑞德

編輯:這是第一個答案的結果(如果里面有 aggfunc 那就完美了?不知道為什么不存在?):|year|platform| |----|--------| |1980.0|2600| |1981.0|2600| |1982.0|2600| |1983.0|2600 ||NES| |1984.0|2600| ||NES|

這是 pivot 表的解決方案:

res = pd.pivot_table(df,index=['year', 'platform'],aggfunc = 'size')

>>> print(res)

year    platform
1984.0  NES         1
1985.0  NES         1
1989.0  GB          1
1990.0  SNES        1
1996.0  GB          1
1999.0  GB          1
2004.0  PS2         1
2005.0  DS          3
2006.0  DS          1
        Wii         2
2007.0  Wii         1
2008.0  Wii         1
2009.0  Wii         3
2010.0  X360        1
2013.0  PS3         1

也許這就是你想要的? 很難說,因為您的 output 與輸入不匹配。

df.sort_values(['year']).groupby(['year','platform']).size().reset_index(name='#_titles')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM