首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas Groupby上的条件计数

Pandas Groupby上的条件计数
EN

Stack Overflow用户
提问于 2020-06-21 02:05:38
回答 2查看 53关注 0票数 0

我有一个IPL数据集,如下所示:

代码语言:javascript
复制
df.head(10):        

                  toss_winner                       winner
0    Royal Challengers Bangalore          Sunrisers Hyderabad
1         Rising Pune Supergiant       Rising Pune Supergiant
2          Kolkata Knight Riders        Kolkata Knight Riders
3                Kings XI Punjab              Kings XI Punjab
4    Royal Challengers Bangalore  Royal Challengers Bangalore
5          Sunrisers Hyderabad          Sunrisers Hyderabad
6               Mumbai Indians               Mumbai Indians
7  Royal Challengers Bangalore              Kings XI Punjab
8       Rising Pune Supergiant             Delhi Daredevils
9               Mumbai Indians               Mumbai Indians

我想根据每支球队掷硬币获胜的次数和他们在掷硬币后赢得比赛的次数对我的数据进行分组。

对于ex,期望的输出是:

代码语言:javascript
复制
team                    total_toss_win                     win_on_toss_win
Royal Challengers Bangalore   3                                     1
Rising Pune Supergiant        2                                     1 
Kolkata Knight Riders         1                                     1
Kings XI Punjab               1                                     1  (although 2 wins, but lost the toss on second win)
and so on....

我尝试了groupby和aggregation的变体,但似乎都不起作用

EN

回答 2

Stack Overflow用户

发布于 2020-06-21 02:17:13

先试用melt,然后使用unstack试用groupby

代码语言:javascript
复制
s = pd.melt(df).groupby('value')['variable'].value_counts().unstack('variable')\
                .fillna(0)

print(s)

variable                     toss_winner  winner
value                                           
Delhi Daredevils                     0.0     1.0
Kings XI Punjab                      1.0     2.0
Kolkata Knight Riders                1.0     1.0
Mumbai Indians                       2.0     2.0
Rising Pune Supergiant               2.0     1.0
Royal Challengers Bangalore          3.0     1.0
Sunrisers Hyderabad                  1.0     2.0
票数 0
EN

Stack Overflow用户

发布于 2020-06-21 02:24:16

下面是理解每一步的简单方法:

代码语言:javascript
复制
# number of counts each team win the toss
a = df.groupby("toss_winner").size()

# number of times they win the match after winning the toss
b = df.query("toss_winner == winner").groupby(["toss_winner"]).size()

# output
f = pd.concat([a, b], axis=1).reset_index().rename(columns={0: 'total_toss_win', 1: 'win_on_toss_win'})

print(f)

                   toss_winner  total_toss_win  win_on_toss_win
0              Kings XI Punjab               1                1
1        Kolkata Knight Riders               1                1
2               Mumbai Indians               2                2
3       Rising Pune Supergiant               2                1
4  Royal Challengers Bangalore               3                1
5          Sunrisers Hyderabad               1                1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62489773

复制
相关文章

相似问题

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