python - 如何根据其他 2 列聚合 pandas 列的计数

标签 python pandas

我有一个数据框,如下图所示。我目前有两列显示某人遭受的伤害,旁边的一列代表该人错过的比赛(如果他们因受伤错过了比赛则为 1,如果他们没有因受伤错过比赛则为无伤害)。在第三列而不是 Nan 中,我希望汇总该球员因伤缺席的比赛数量。正如你所看到的,这名球员在第一周就遭受了脑震荡并缺席了一场比赛,但在接下来的一周里却没有缺席。因此他因脑震荡缺席了一场比赛。我希望该行看起来像:

Injury       Game Missed    Games Missed Due To Injury
Concussion       1                (Concussion,1)
Concussion       0                (Concussion,1)
No Injury        No Injury        Nan
Shoulder         1                (Shoulder,1)
Shoulder         No Injury        (Shoulder,1)
Shoulder         1                (Shoulder,2)
Shoulder         1                (Shoulder,3)

如何在 Pandas 中实现这一目标?

谢谢!

最佳答案

使用Series.groupby计算 cumsum ,在此之前使用 pd.to_numericSeries.fillna 将“无伤害”替换为“0”,以便转换为整数( Series.astype )来计算累积和。 计算总和后,转换为 str 并使用 Series.str.cat 将其连接到 Injury 列。 :

 missed=pd.to_numeric(df['Game Missed'],errors='coerce').fillna(0).astype(int).groupby(df['Injury']).cumsum()  
df['Games Missed Due To Injury']=( missed.astype(str)
                                         .str.cat(df['Injury'],sep=',')
                                         .mask(df['Injury'].str.contains('No')) )
print(df)
<小时/>
       Injury Game Missed Games Missed Due To Injury
0  Concussion           1               1,Concussion
1  Concussion           0               1,Concussion
2   No Injury   No Injury                        NaN
3    Shoulder           1                 1,Shoulder
4    Shoulder   No Injury                 1,Shoulder
5    Shoulder           1                 2,Shoulder
6    Shoulder           1                 3,Shoulder

注意,您可以使用您需要的掩码:

df['Injury'].str.contains('No')
df['Injury'].eq('No Injury')
df['Injury'].str.contains('No Injury',case=False)

关于python - 如何根据其他 2 列聚合 pandas 列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755032/

相关文章:

python - 跳过 matplotlib 中的第一个和最后一个点连接

python - 如何将值从 Python Pandas 中的多个字典对象插入到数据帧中

python - 如何在Python中解析JSON以获取特定值

python - 简单 python 模块出错

python - 如何从 html 源代码中具有相同属性集和相同层次结构的 2 个元素中抓取单个元素(使用 python 的漂亮汤)

python - 我在专栏中失去了我的值(value)观

python - 如何在多索引数据帧的最外层使用 iloc 切片?

Python:使用 %x(语言环境)格式化的日期与预期不符

python - 如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测到?

python - 在 groupby pandas 内有条件地设置值