如何在DataFrame中按日期统计每日投篮命中数与出手数?
解决DataFrame按日期统计投篮命中数和出手数的问题
你用df.groupby("Date")['ShotMade','ShotTaken'].count()得不到预期结果,是因为count()统计的是非空值的数量,而你需要的是对每日的投篮数据求和——ShotMade要算每日命中数总和,ShotTaken要算每日出手数总和,应该用sum()方法替代。
正确代码(生成每日统计结果)
daily_stats = df.groupby("Date")[["ShotMade", "ShotTaken"]].sum().reset_index()
代码说明:
groupby("Date"):按日期对数据分组sum():对每组的ShotMade和ShotTaken分别求和,正好匹配你需要的每日命中数、出手数reset_index():将分组后的日期索引转为普通列,输出格式和你期望的一致
运行后得到的结果:
Date ShotMade ShotTaken 0 4/20/2020 2 4 1 4/21/2020 3 3 2 4/22/2020 2 5
若需在原DataFrame新增统计列
如果要在原有数据的每行都添加上当日的总命中数和总出手数,用transform()方法:
df["DailyShotMade"] = df.groupby("Date")["ShotMade"].transform("sum") df["DailyShotTaken"] = df.groupby("Date")["ShotTaken"].transform("sum")
处理后的原DataFrame示例:
Date ShotMade ShotTaken DailyShotMade DailyShotTaken 0 4/20/2020 0 1 2 4 1 4/20/2020 0 1 2 4 2 4/20/2020 1 1 2 4 3 4/20/2020 1 1 2 4 ...
内容的提问来源于stack exchange,提问作者Oscar
相关产品推荐
相关产品推荐

