繁体   English   中英

Python Pandas - 计算到目前为止在每一行的列中找到的字符串

[英]Python Pandas - count string found in column so far for every row

我正在对过去的 NHL 赛季进行一些分析和视觉效果,但在我的 DataFrame 中创建一些额外的数据/功能时遇到了困难。

这是数据框的简化版本,其中每一行代表一个游戏。

game_id h_abbr a_abbr 
0001    WSH    TOR 
0002    ANA    TOR 
0003    TOR    MIN 

我如何计算到目前为止每支球队打了多少场比赛(包括有问题的比赛),以便新专栏看起来像这样?

game_id h_abbr a_abbr ht_game_no at_game_no
0001    WSH    TOR    1          1
0002    ANA    TOR    1          2
0003    TOR    MIN    3          1

经过大量的搜索和尝试,我只找到了一种方法来计算球队打了多少场主场或客场比赛,但我对比赛总数感兴趣。

df['Nth_away_game'] = df.groupby('a_abbr').cumcount() + 1

想法是通过DataFrame.stack重塑值,然后使用GroupBy.cumcount ,通过DataFrame.add_suffix检查列名称,最后DataFrame.join到原始:

s = df[['h_abbr','a_abbr']].stack()
df = df.join(s.groupby(s).cumcount().add(1).unstack().add_suffix('_no'))
print (df)
   game_id h_abbr a_abbr  h_abbr_no  a_abbr_no
0        1    WSH    TOR          1          1
1        2    ANA    TOR          1          2
2        3    TOR    MIN          3          1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM