我有一个 df ,其中包含给定年份的给定统计数据中每个团队的排名。它看起来像这样:teamID yearID W L IP WHIP K% BB% HR/9 ERA FIP ERA- FIP- K/BB+ WHIP+ K%+ BB%+ WAR1209 Athletics 2001.0 2.0 6.0 3.0 7.0 19.0 9.0 1.0 7.0 5.0 7.0 5.0 8.0 7.0 11.0 10.0 4.0我想创建一个列,其中包含每行的平均排名,但是执行 df.mean(axis=1) 包括年份(2001)并且确实会导致数字丢失。有人知道如何用 lambda 和 .apply() 来解决这个问题,或者是否有一个可以排除某些列的 kwarg?我还没找到。我想跨年执行此操作,这就是 YearID 列是必要的原因。
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
只需使用loc[]列上的推导式将其从计算中排除即可。
df = pd.read_csv(io.StringIO("""teamID yearID W L IP WHIP K% BB% HR/9 ERA FIP ERA- FIP- K/BB+ WHIP+ K%+ BB%+ WAR
1209 Athletics 2001.0 2.0 6.0 3.0 7.0 19.0 9.0 1.0 7.0 5.0 7.0 5.0 8.0 7.0 11.0 10.0 4.0"""), sep="\s+")
df["mean"] = df.loc[:,[c for c in df.columns if c!= "yearID"]].mean(axis=1)
输出
teamID yearID W L IP WHIP K% BB% HR/9 ERA FIP ERA- FIP- K/BB+ WHIP+ K%+ BB%+ WAR mean
1209 Athletics 2001.0 2.0 6.0 3.0 7.0 19.0 9.0 1.0 7.0 5.0 7.0 5.0 8.0 7.0 11.0 10.0 4.0 6.9375
添加回答
举报
0/150
提交
取消