首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError: xxx的石斑鱼非一维熊猫pivot_table()

ValueError: xxx的石斑鱼非一维熊猫pivot_table()
EN

Stack Overflow用户
提问于 2022-02-15 20:15:07
回答 1查看 1.6K关注 0票数 0

我正在致力于奥运数据集,并希望创建另一个数据,其中有运动员总数和奖牌总数按类型为每个国家。使用下面的pivot_table给出一个错误"ValueError:石斑鱼“表示'ID‘而不是一维”pd.pivot_table(olymp, index='NOC', columns=['ID','Medal'], values=['ID','Medal'], aggfunc={'ID':pd.Series.nunique,'Medal':'count'}).sort_values(by='Medal')

结果应为每个国家一排,totalAthletes、金、银、铜牌为栏。不知道如何使用pivot_table来实现它。我可以使用交叉表的合并来完成这个任务,但是我只想使用一个pivottable语句。这里是原始df的样子。

EN

回答 1

Stack Overflow用户

发布于 2022-02-15 20:40:03

更新

我想得到奖牌的细分,例如金牌,银牌,铜牌。另外,我需要运动员id的唯一计数,所以我使用nunique,因为一个运动员可以参加多个项目。奖牌也是一样,忽略了NA的价值

IIUC:

代码语言:javascript
复制
out = df.pivot_table('ID', 'NOC', 'Medal', aggfunc='count', fill_value=0)
out['ID'] = df[df['Medal'].notna()].groupby('NOC')['ID'].nunique()

输出:

代码语言:javascript
复制
>>> out
Medal  Bronze  Gold  Silver   ID
NOC                             
AFG         2     0       0    1
AHO         0     0       1    1
ALG         8     5       4   14
ANZ         5    20       4   25
ARG        91    91      92  231
..        ...   ...     ...  ...
VIE         0     1       3    3
WIF         5     0       0    4
YUG        93   130     167  317
ZAM         1     0       1    2
ZIM         1    17       4   16

[149 rows x 4 columns]

旧答案

对于columnsvalues,不能有相同的列

代码语言:javascript
复制
out = olymp.pivot_table(index='NOC', values=['ID','Medal'],
                        aggfunc={'ID':pd.Series.nunique, 'Medal':'count'}) \
           .sort_values('Medal', ascending=False)
print(out)

# Output
       ID  Medal
NOC             
USA  9653   5637
URS  2948   2503
GER  4872   2165
GBR  6281   2068
FRA  6170   1777
..    ...    ...
GAM    33      0
GBS    15      0
GEQ    26      0
PNG    61      0
LBA    68      0

[230 rows x 2 columns]

获得上述结果的另一种方法是:

代码语言:javascript
复制
out = olym.groupby('NOC').agg({'ID': pd.Series.nunique, 'Medal': 'count'}) \
          .sort_values('Medal', ascending=False)
print(out)

# Output
       ID  Medal
NOC             
USA  9653   5637
URS  2948   2503
GER  4872   2165
GBR  6281   2068
FRA  6170   1777
..    ...    ...
GAM    33      0
GBS    15      0
GEQ    26      0
PNG    61      0
LBA    68      0

[230 rows x 2 columns]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71132809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档