[英]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.